{
 "nbformat": 4,
 "nbformat_minor": 0,
 "metadata": {
  "colab": {
   "provenance": [],
   "gpuType": "T4"
  },
  "kernelspec": {
   "name": "python3",
   "display_name": "Python 3"
  },
  "language_info": {
   "name": "python"
  },
  "accelerator": "GPU",
  "gpuClass": "standard"
 },
 "cells": [
  {
   "cell_type": "markdown",
   "source": [
    "# Step 0: Enable GPUs\n",
    "First, you'll need to enable GPUs for the notebook:\n",
    "\n",
    "*   Navigate to Edit→Notebook Settings\n",
    "*   select GPU from the Hardware Accelerator drop-down"
   ],
   "metadata": {
    "id": "X0kNIzCZmFGv"
   }
  },
  {
   "cell_type": "markdown",
   "source": [
    "# Step 1: Installation\n",
    "It takes about 30 minutes. "
   ],
   "metadata": {
    "id": "-tqrjfClgxCE"
   }
  },
  {
   "cell_type": "code",
   "execution_count": 1,
   "metadata": {
    "colab": {
     "base_uri": "https://localhost:8080/"
    },
    "id": "HTu8HLmRNzwn",
    "outputId": "3e3fc503-f030-4dc9-a6ec-09b468458148"
   },
   "outputs": [
    {
     "output_type": "stream",
     "name": "stdout",
     "text": [
      "Looking in indexes: https://pypi.org/simple, https://us-python.pkg.dev/colab-wheels/public/simple/\n",
      "Requirement already satisfied: torch in /usr/local/lib/python3.10/dist-packages (2.0.0+cu118)\n",
      "Requirement already satisfied: torchvision in /usr/local/lib/python3.10/dist-packages (0.15.1+cu118)\n",
      "Requirement already satisfied: torchaudio in /usr/local/lib/python3.10/dist-packages (2.0.1+cu118)\n",
      "Requirement already satisfied: triton==2.0.0 in /usr/local/lib/python3.10/dist-packages (from torch) (2.0.0)\n",
      "Requirement already satisfied: networkx in /usr/local/lib/python3.10/dist-packages (from torch) (3.1)\n",
      "Requirement already satisfied: typing-extensions in /usr/local/lib/python3.10/dist-packages (from torch) (4.5.0)\n",
      "Requirement already satisfied: jinja2 in /usr/local/lib/python3.10/dist-packages (from torch) (3.1.2)\n",
      "Requirement already satisfied: filelock in /usr/local/lib/python3.10/dist-packages (from torch) (3.12.0)\n",
      "Requirement already satisfied: sympy in /usr/local/lib/python3.10/dist-packages (from torch) (1.11.1)\n",
      "Requirement already satisfied: lit in /usr/local/lib/python3.10/dist-packages (from triton==2.0.0->torch) (16.0.2)\n",
      "Requirement already satisfied: cmake in /usr/local/lib/python3.10/dist-packages (from triton==2.0.0->torch) (3.25.2)\n",
      "Requirement already satisfied: requests in /usr/local/lib/python3.10/dist-packages (from torchvision) (2.27.1)\n",
      "Requirement already satisfied: numpy in /usr/local/lib/python3.10/dist-packages (from torchvision) (1.22.4)\n",
      "Requirement already satisfied: pillow!=8.3.*,>=5.3.0 in /usr/local/lib/python3.10/dist-packages (from torchvision) (8.4.0)\n",
      "Requirement already satisfied: MarkupSafe>=2.0 in /usr/local/lib/python3.10/dist-packages (from jinja2->torch) (2.1.2)\n",
      "Requirement already satisfied: idna<4,>=2.5 in /usr/local/lib/python3.10/dist-packages (from requests->torchvision) (3.4)\n",
      "Requirement already satisfied: charset-normalizer~=2.0.0 in /usr/local/lib/python3.10/dist-packages (from requests->torchvision) (2.0.12)\n",
      "Requirement already satisfied: certifi>=2017.4.17 in /usr/local/lib/python3.10/dist-packages (from requests->torchvision) (2022.12.7)\n",
      "Requirement already satisfied: urllib3<1.27,>=1.21.1 in /usr/local/lib/python3.10/dist-packages (from requests->torchvision) (1.26.15)\n",
      "Requirement already satisfied: mpmath>=0.19 in /usr/local/lib/python3.10/dist-packages (from sympy->torch) (1.3.0)\n",
      "Looking in indexes: https://pypi.org/simple, https://us-python.pkg.dev/colab-wheels/public/simple/\n",
      "Requirement already satisfied: tensorflow in /usr/local/lib/python3.10/dist-packages (2.12.0)\n",
      "Requirement already satisfied: opt-einsum>=2.3.2 in /usr/local/lib/python3.10/dist-packages (from tensorflow) (3.3.0)\n",
      "Requirement already satisfied: six>=1.12.0 in /usr/local/lib/python3.10/dist-packages (from tensorflow) (1.16.0)\n",
      "Requirement already satisfied: gast<=0.4.0,>=0.2.1 in /usr/local/lib/python3.10/dist-packages (from tensorflow) (0.4.0)\n",
      "Requirement already satisfied: numpy<1.24,>=1.22 in /usr/local/lib/python3.10/dist-packages (from tensorflow) (1.22.4)\n",
      "Requirement already satisfied: astunparse>=1.6.0 in /usr/local/lib/python3.10/dist-packages (from tensorflow) (1.6.3)\n",
      "Requirement already satisfied: typing-extensions>=3.6.6 in /usr/local/lib/python3.10/dist-packages (from tensorflow) (4.5.0)\n",
      "Requirement already satisfied: jax>=0.3.15 in /usr/local/lib/python3.10/dist-packages (from tensorflow) (0.4.8)\n",
      "Requirement already satisfied: h5py>=2.9.0 in /usr/local/lib/python3.10/dist-packages (from tensorflow) (3.8.0)\n",
      "Requirement already satisfied: packaging in /usr/local/lib/python3.10/dist-packages (from tensorflow) (23.1)\n",
      "Requirement already satisfied: setuptools in /usr/local/lib/python3.10/dist-packages (from tensorflow) (67.7.2)\n",
      "Requirement already satisfied: keras<2.13,>=2.12.0 in /usr/local/lib/python3.10/dist-packages (from tensorflow) (2.12.0)\n",
      "Requirement already satisfied: absl-py>=1.0.0 in /usr/local/lib/python3.10/dist-packages (from tensorflow) (1.4.0)\n",
      "Requirement already satisfied: flatbuffers>=2.0 in /usr/local/lib/python3.10/dist-packages (from tensorflow) (23.3.3)\n",
      "Requirement already satisfied: google-pasta>=0.1.1 in /usr/local/lib/python3.10/dist-packages (from tensorflow) (0.2.0)\n",
      "Requirement already satisfied: termcolor>=1.1.0 in /usr/local/lib/python3.10/dist-packages (from tensorflow) (2.3.0)\n",
      "Requirement already satisfied: tensorflow-io-gcs-filesystem>=0.23.1 in /usr/local/lib/python3.10/dist-packages (from tensorflow) (0.32.0)\n",
      "Requirement already satisfied: tensorflow-estimator<2.13,>=2.12.0 in /usr/local/lib/python3.10/dist-packages (from tensorflow) (2.12.0)\n",
      "Requirement already satisfied: protobuf!=4.21.0,!=4.21.1,!=4.21.2,!=4.21.3,!=4.21.4,!=4.21.5,<5.0.0dev,>=3.20.3 in /usr/local/lib/python3.10/dist-packages (from tensorflow) (3.20.3)\n",
      "Requirement already satisfied: wrapt<1.15,>=1.11.0 in /usr/local/lib/python3.10/dist-packages (from tensorflow) (1.14.1)\n",
      "Requirement already satisfied: grpcio<2.0,>=1.24.3 in /usr/local/lib/python3.10/dist-packages (from tensorflow) (1.54.0)\n",
      "Requirement already satisfied: tensorboard<2.13,>=2.12 in /usr/local/lib/python3.10/dist-packages (from tensorflow) (2.12.2)\n",
      "Requirement already satisfied: libclang>=13.0.0 in /usr/local/lib/python3.10/dist-packages (from tensorflow) (16.0.0)\n",
      "Requirement already satisfied: wheel<1.0,>=0.23.0 in /usr/local/lib/python3.10/dist-packages (from astunparse>=1.6.0->tensorflow) (0.40.0)\n",
      "Requirement already satisfied: scipy>=1.7 in /usr/local/lib/python3.10/dist-packages (from jax>=0.3.15->tensorflow) (1.10.1)\n",
      "Requirement already satisfied: ml-dtypes>=0.0.3 in /usr/local/lib/python3.10/dist-packages (from jax>=0.3.15->tensorflow) (0.1.0)\n",
      "Requirement already satisfied: google-auth<3,>=1.6.3 in /usr/local/lib/python3.10/dist-packages (from tensorboard<2.13,>=2.12->tensorflow) (2.17.3)\n",
      "Requirement already satisfied: google-auth-oauthlib<1.1,>=0.5 in /usr/local/lib/python3.10/dist-packages (from tensorboard<2.13,>=2.12->tensorflow) (1.0.0)\n",
      "Requirement already satisfied: tensorboard-data-server<0.8.0,>=0.7.0 in /usr/local/lib/python3.10/dist-packages (from tensorboard<2.13,>=2.12->tensorflow) (0.7.0)\n",
      "Requirement already satisfied: werkzeug>=1.0.1 in /usr/local/lib/python3.10/dist-packages (from tensorboard<2.13,>=2.12->tensorflow) (2.3.0)\n",
      "Requirement already satisfied: markdown>=2.6.8 in /usr/local/lib/python3.10/dist-packages (from tensorboard<2.13,>=2.12->tensorflow) (3.4.3)\n",
      "Requirement already satisfied: tensorboard-plugin-wit>=1.6.0 in /usr/local/lib/python3.10/dist-packages (from tensorboard<2.13,>=2.12->tensorflow) (1.8.1)\n",
      "Requirement already satisfied: requests<3,>=2.21.0 in /usr/local/lib/python3.10/dist-packages (from tensorboard<2.13,>=2.12->tensorflow) (2.27.1)\n",
      "Requirement already satisfied: rsa<5,>=3.1.4 in /usr/local/lib/python3.10/dist-packages (from google-auth<3,>=1.6.3->tensorboard<2.13,>=2.12->tensorflow) (4.9)\n",
      "Requirement already satisfied: cachetools<6.0,>=2.0.0 in /usr/local/lib/python3.10/dist-packages (from google-auth<3,>=1.6.3->tensorboard<2.13,>=2.12->tensorflow) (5.3.0)\n",
      "Requirement already satisfied: pyasn1-modules>=0.2.1 in /usr/local/lib/python3.10/dist-packages (from google-auth<3,>=1.6.3->tensorboard<2.13,>=2.12->tensorflow) (0.3.0)\n",
      "Requirement already satisfied: requests-oauthlib>=0.7.0 in /usr/local/lib/python3.10/dist-packages (from google-auth-oauthlib<1.1,>=0.5->tensorboard<2.13,>=2.12->tensorflow) (1.3.1)\n",
      "Requirement already satisfied: idna<4,>=2.5 in /usr/local/lib/python3.10/dist-packages (from requests<3,>=2.21.0->tensorboard<2.13,>=2.12->tensorflow) (3.4)\n",
      "Requirement already satisfied: charset-normalizer~=2.0.0 in /usr/local/lib/python3.10/dist-packages (from requests<3,>=2.21.0->tensorboard<2.13,>=2.12->tensorflow) (2.0.12)\n",
      "Requirement already satisfied: certifi>=2017.4.17 in /usr/local/lib/python3.10/dist-packages (from requests<3,>=2.21.0->tensorboard<2.13,>=2.12->tensorflow) (2022.12.7)\n",
      "Requirement already satisfied: urllib3<1.27,>=1.21.1 in /usr/local/lib/python3.10/dist-packages (from requests<3,>=2.21.0->tensorboard<2.13,>=2.12->tensorflow) (1.26.15)\n",
      "Requirement already satisfied: MarkupSafe>=2.1.1 in /usr/local/lib/python3.10/dist-packages (from werkzeug>=1.0.1->tensorboard<2.13,>=2.12->tensorflow) (2.1.2)\n",
      "Requirement already satisfied: pyasn1<0.6.0,>=0.4.6 in /usr/local/lib/python3.10/dist-packages (from pyasn1-modules>=0.2.1->google-auth<3,>=1.6.3->tensorboard<2.13,>=2.12->tensorflow) (0.5.0)\n",
      "Requirement already satisfied: oauthlib>=3.0.0 in /usr/local/lib/python3.10/dist-packages (from requests-oauthlib>=0.7.0->google-auth-oauthlib<1.1,>=0.5->tensorboard<2.13,>=2.12->tensorflow) (3.2.2)\n",
      "Looking in indexes: https://pypi.org/simple, https://us-python.pkg.dev/colab-wheels/public/simple/\n",
      "Looking in links: https://modelscope.oss-cn-beijing.aliyuncs.com/releases/repo.html\n",
      "Collecting modelscope[cv]\n",
      "  Downloading modelscope-1.5.2-py3-none-any.whl (4.4 MB)\n",
      "\u001B[2K     \u001B[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001B[0m \u001B[32m4.4/4.4 MB\u001B[0m \u001B[31m74.9 MB/s\u001B[0m eta \u001B[36m0:00:00\u001B[0m\n",
      "\u001B[?25hRequirement already satisfied: attrs in /usr/local/lib/python3.10/dist-packages (from modelscope[cv]) (23.1.0)\n",
      "Collecting yapf\n",
      "  Downloading yapf-0.33.0-py2.py3-none-any.whl (200 kB)\n",
      "\u001B[2K     \u001B[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001B[0m \u001B[32m200.9/200.9 kB\u001B[0m \u001B[31m26.1 MB/s\u001B[0m eta \u001B[36m0:00:00\u001B[0m\n",
      "\u001B[?25hRequirement already satisfied: tqdm>=4.64.0 in /usr/local/lib/python3.10/dist-packages (from modelscope[cv]) (4.65.0)\n",
      "Requirement already satisfied: pyyaml in /usr/local/lib/python3.10/dist-packages (from modelscope[cv]) (6.0)\n",
      "Collecting addict\n",
      "  Downloading addict-2.4.0-py3-none-any.whl (3.8 kB)\n",
      "Collecting setuptools==59.8.0\n",
      "  Downloading setuptools-59.8.0-py3-none-any.whl (952 kB)\n",
      "\u001B[2K     \u001B[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001B[0m \u001B[32m952.8/952.8 kB\u001B[0m \u001B[31m49.8 MB/s\u001B[0m eta \u001B[36m0:00:00\u001B[0m\n",
      "\u001B[?25hRequirement already satisfied: sortedcontainers>=1.5.9 in /usr/local/lib/python3.10/dist-packages (from modelscope[cv]) (2.4.0)\n",
      "Requirement already satisfied: Pillow>=6.2.0 in /usr/local/lib/python3.10/dist-packages (from modelscope[cv]) (8.4.0)\n",
      "Collecting oss2\n",
      "  Downloading oss2-2.17.0.tar.gz (259 kB)\n",
      "\u001B[2K     \u001B[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001B[0m \u001B[32m259.5/259.5 kB\u001B[0m \u001B[31m28.6 MB/s\u001B[0m eta \u001B[36m0:00:00\u001B[0m\n",
      "\u001B[?25h  Preparing metadata (setup.py) ... \u001B[?25l\u001B[?25hdone\n",
      "Requirement already satisfied: scipy in /usr/local/lib/python3.10/dist-packages (from modelscope[cv]) (1.10.1)\n",
      "Collecting pyarrow!=9.0.0,>=6.0.0\n",
      "  Downloading pyarrow-12.0.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (38.9 MB)\n",
      "\u001B[2K     \u001B[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001B[0m \u001B[32m38.9/38.9 MB\u001B[0m \u001B[31m15.6 MB/s\u001B[0m eta \u001B[36m0:00:00\u001B[0m\n",
      "\u001B[?25hCollecting einops\n",
      "  Downloading einops-0.6.1-py3-none-any.whl (42 kB)\n",
      "\u001B[2K     \u001B[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001B[0m \u001B[32m42.2/42.2 kB\u001B[0m \u001B[31m6.0 MB/s\u001B[0m eta \u001B[36m0:00:00\u001B[0m\n",
      "\u001B[?25hRequirement already satisfied: python-dateutil>=2.1 in /usr/local/lib/python3.10/dist-packages (from modelscope[cv]) (2.8.2)\n",
      "Collecting datasets<=2.8.0,>=2.7.0\n",
      "  Downloading datasets-2.8.0-py3-none-any.whl (452 kB)\n",
      "\u001B[2K     \u001B[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001B[0m \u001B[32m452.9/452.9 kB\u001B[0m \u001B[31m49.9 MB/s\u001B[0m eta \u001B[36m0:00:00\u001B[0m\n",
      "\u001B[?25hRequirement already satisfied: filelock>=3.3.0 in /usr/local/lib/python3.10/dist-packages (from modelscope[cv]) (3.12.0)\n",
      "Requirement already satisfied: gast>=0.2.2 in /usr/local/lib/python3.10/dist-packages (from modelscope[cv]) (0.4.0)\n",
      "Requirement already satisfied: requests in /usr/local/lib/python3.10/dist-packages (from modelscope[cv]) (2.27.1)\n",
      "Requirement already satisfied: numpy<1.24.0 in /usr/local/lib/python3.10/dist-packages (from modelscope[cv]) (1.22.4)\n",
      "Collecting simplejson>=3.3.0\n",
      "  Downloading simplejson-3.19.1-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl (137 kB)\n",
      "\u001B[2K     \u001B[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001B[0m \u001B[32m137.9/137.9 kB\u001B[0m \u001B[31m17.9 MB/s\u001B[0m eta \u001B[36m0:00:00\u001B[0m\n",
      "\u001B[?25hCollecting mmdet<=2.28.2\n",
      "  Downloading mmdet-2.28.2-py3-none-any.whl (1.5 MB)\n",
      "\u001B[2K     \u001B[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001B[0m \u001B[32m1.5/1.5 MB\u001B[0m \u001B[31m79.0 MB/s\u001B[0m eta \u001B[36m0:00:00\u001B[0m\n",
      "\u001B[?25hRequirement already satisfied: numba in /usr/local/lib/python3.10/dist-packages (from modelscope[cv]) (0.56.4)\n",
      "Collecting edit-distance\n",
      "  Downloading edit_distance-1.0.6-py3-none-any.whl (11 kB)\n",
      "Collecting smplx\n",
      "  Downloading smplx-0.1.28-py3-none-any.whl (29 kB)\n",
      "Collecting fairscale>=0.4.1\n",
      "  Downloading fairscale-0.4.13.tar.gz (266 kB)\n",
      "\u001B[2K     \u001B[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001B[0m \u001B[32m266.3/266.3 kB\u001B[0m \u001B[31m23.7 MB/s\u001B[0m eta \u001B[36m0:00:00\u001B[0m\n",
      "\u001B[?25h  Installing build dependencies ... \u001B[?25l\u001B[?25hdone\n",
      "  Getting requirements to build wheel ... \u001B[?25l\u001B[?25hdone\n",
      "  Installing backend dependencies ... \u001B[?25l\u001B[?25hdone\n",
      "  Preparing metadata (pyproject.toml) ... \u001B[?25l\u001B[?25hdone\n",
      "Collecting ddpm-guided-diffusion\n",
      "  Downloading https://modelscope.oss-cn-beijing.aliyuncs.com/releases/dependencies/ddpm_guided_diffusion-0.0.0-py3-none-any.whl (38 kB)\n",
      "Collecting av>=9.2.0\n",
      "  Downloading av-10.0.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (31.0 MB)\n",
      "\u001B[2K     \u001B[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001B[0m \u001B[32m31.0/31.0 MB\u001B[0m \u001B[31m23.3 MB/s\u001B[0m eta \u001B[36m0:00:00\u001B[0m\n",
      "\u001B[?25hRequirement already satisfied: fastai>=1.0.51 in /usr/local/lib/python3.10/dist-packages (from modelscope[cv]) (2.7.12)\n",
      "Collecting utils\n",
      "  Downloading utils-1.0.1-py2.py3-none-any.whl (21 kB)\n",
      "Requirement already satisfied: psutil in /usr/local/lib/python3.10/dist-packages (from modelscope[cv]) (5.9.5)\n",
      "Collecting onnx\n",
      "  Downloading onnx-1.14.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (14.6 MB)\n",
      "\u001B[2K     \u001B[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001B[0m \u001B[32m14.6/14.6 MB\u001B[0m \u001B[31m96.0 MB/s\u001B[0m eta \u001B[36m0:00:00\u001B[0m\n",
      "\u001B[?25hCollecting accelerate\n",
      "  Downloading accelerate-0.18.0-py3-none-any.whl (215 kB)\n",
      "\u001B[2K     \u001B[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001B[0m \u001B[32m215.3/215.3 kB\u001B[0m \u001B[31m27.8 MB/s\u001B[0m eta \u001B[36m0:00:00\u001B[0m\n",
      "\u001B[?25hCollecting easyrobust\n",
      "  Downloading easyrobust-0.2.4.tar.gz (1.5 MB)\n",
      "\u001B[2K     \u001B[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001B[0m \u001B[32m1.5/1.5 MB\u001B[0m \u001B[31m65.7 MB/s\u001B[0m eta \u001B[36m0:00:00\u001B[0m\n",
      "\u001B[?25h  Preparing metadata (setup.py) ... \u001B[?25l\u001B[?25hdone\n",
      "Requirement already satisfied: networkx in /usr/local/lib/python3.10/dist-packages (from modelscope[cv]) (3.1)\n",
      "Collecting open-clip-torch>=2.7.0\n",
      "  Downloading open_clip_torch-2.19.0-py3-none-any.whl (1.5 MB)\n",
      "\u001B[2K     \u001B[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001B[0m \u001B[32m1.5/1.5 MB\u001B[0m \u001B[31m67.8 MB/s\u001B[0m eta \u001B[36m0:00:00\u001B[0m\n",
      "\u001B[?25hCollecting clip>=1.0\n",
      "  Downloading https://modelscope.oss-cn-beijing.aliyuncs.com/releases/dependencies/clip-1.0-py3-none-any.whl (1.4 MB)\n",
      "\u001B[2K     \u001B[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001B[0m \u001B[32m1.4/1.4 MB\u001B[0m \u001B[31m1.6 MB/s\u001B[0m eta \u001B[36m0:00:00\u001B[0m\n",
      "\u001B[?25hCollecting ujson\n",
      "  Downloading ujson-5.7.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (52 kB)\n",
      "\u001B[2K     \u001B[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001B[0m \u001B[32m52.8/52.8 kB\u001B[0m \u001B[31m7.6 MB/s\u001B[0m eta \u001B[36m0:00:00\u001B[0m\n",
      "\u001B[?25hCollecting omegaconf\n",
      "  Downloading omegaconf-2.3.0-py3-none-any.whl (79 kB)\n",
      "\u001B[2K     \u001B[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001B[0m \u001B[32m79.5/79.5 kB\u001B[0m \u001B[31m10.5 MB/s\u001B[0m eta \u001B[36m0:00:00\u001B[0m\n",
      "\u001B[?25hRequirement already satisfied: opencv-python in /usr/local/lib/python3.10/dist-packages (from modelscope[cv]) (4.7.0.72)\n",
      "Collecting lpips\n",
      "  Downloading lpips-0.1.4-py3-none-any.whl (53 kB)\n",
      "\u001B[2K     \u001B[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001B[0m \u001B[32m53.8/53.8 kB\u001B[0m \u001B[31m7.8 MB/s\u001B[0m eta \u001B[36m0:00:00\u001B[0m\n",
      "\u001B[?25hRequirement already satisfied: imgaug>=0.4.0 in /usr/local/lib/python3.10/dist-packages (from modelscope[cv]) (0.4.0)\n",
      "Requirement already satisfied: imageio>=2.9.0 in /usr/local/lib/python3.10/dist-packages (from modelscope[cv]) (2.25.1)\n",
      "Collecting ftfy\n",
      "  Downloading ftfy-6.1.1-py3-none-any.whl (53 kB)\n",
      "\u001B[2K     \u001B[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001B[0m \u001B[32m53.1/53.1 kB\u001B[0m \u001B[31m7.1 MB/s\u001B[0m eta \u001B[36m0:00:00\u001B[0m\n",
      "\u001B[?25hCollecting control-ldm\n",
      "  Downloading https://modelscope.oss-cn-beijing.aliyuncs.com/releases/dependencies/diffusion/control_ldm-0.0.1-py3-none-any.whl (113 kB)\n",
      "\u001B[2K     \u001B[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001B[0m \u001B[32m113.2/113.2 kB\u001B[0m \u001B[31m14.5 MB/s\u001B[0m eta \u001B[36m0:00:00\u001B[0m\n",
      "\u001B[?25hCollecting lmdb\n",
      "  Downloading lmdb-1.4.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (299 kB)\n",
      "\u001B[2K     \u001B[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001B[0m \u001B[32m299.2/299.2 kB\u001B[0m \u001B[31m41.1 MB/s\u001B[0m eta \u001B[36m0:00:00\u001B[0m\n",
      "\u001B[?25hRequirement already satisfied: albumentations>=1.0.3 in /usr/local/lib/python3.10/dist-packages (from modelscope[cv]) (1.2.1)\n",
      "Requirement already satisfied: scikit-learn>=0.20.1 in /usr/local/lib/python3.10/dist-packages (from modelscope[cv]) (1.2.2)\n",
      "Requirement already satisfied: regex in /usr/local/lib/python3.10/dist-packages (from modelscope[cv]) (2022.10.31)\n",
      "Collecting face-alignment>=1.3.5\n",
      "  Downloading face_alignment-1.3.5.tar.gz (27 kB)\n",
      "  Preparing metadata (setup.py) ... \u001B[?25l\u001B[?25hdone\n",
      "Collecting ffmpeg-python>=0.2.0\n",
      "  Downloading ffmpeg_python-0.2.0-py3-none-any.whl (25 kB)\n",
      "Collecting timm>=0.4.9\n",
      "  Downloading timm-0.6.13-py3-none-any.whl (549 kB)\n",
      "\u001B[2K     \u001B[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001B[0m \u001B[32m549.1/549.1 kB\u001B[0m \u001B[31m55.7 MB/s\u001B[0m eta \u001B[36m0:00:00\u001B[0m\n",
      "\u001B[?25hCollecting diffusers\n",
      "  Downloading diffusers-0.16.1-py3-none-any.whl (934 kB)\n",
      "\u001B[2K     \u001B[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001B[0m \u001B[32m934.9/934.9 kB\u001B[0m \u001B[31m68.4 MB/s\u001B[0m eta \u001B[36m0:00:00\u001B[0m\n",
      "\u001B[?25hCollecting shotdetect-scenedetect-lgss>=0.0.4\n",
      "  Downloading https://modelscope.oss-cn-beijing.aliyuncs.com/releases/dependencies/shotdetect_scenedetect_lgss-0.0.4-py3-none-any.whl (90 kB)\n",
      "\u001B[2K     \u001B[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001B[0m \u001B[32m90.8/90.8 kB\u001B[0m \u001B[31m12.4 MB/s\u001B[0m eta \u001B[36m0:00:00\u001B[0m\n",
      "\u001B[?25hCollecting trimesh\n",
      "  Downloading trimesh-3.21.5-py3-none-any.whl (680 kB)\n",
      "\u001B[2K     \u001B[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001B[0m \u001B[32m680.8/680.8 kB\u001B[0m \u001B[31m66.3 MB/s\u001B[0m eta \u001B[36m0:00:00\u001B[0m\n",
      "\u001B[?25hCollecting onnxruntime>=1.10\n",
      "  Downloading onnxruntime-1.14.1-cp310-cp310-manylinux_2_27_x86_64.whl (5.0 MB)\n",
      "\u001B[2K     \u001B[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001B[0m \u001B[32m5.0/5.0 MB\u001B[0m \u001B[31m107.3 MB/s\u001B[0m eta \u001B[36m0:00:00\u001B[0m\n",
      "\u001B[?25hCollecting ml-collections\n",
      "  Downloading ml_collections-0.1.1.tar.gz (77 kB)\n",
      "\u001B[2K     \u001B[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001B[0m \u001B[32m77.9/77.9 kB\u001B[0m \u001B[31m9.7 MB/s\u001B[0m eta \u001B[36m0:00:00\u001B[0m\n",
      "\u001B[?25h  Preparing metadata (setup.py) ... \u001B[?25l\u001B[?25hdone\n",
      "Requirement already satisfied: scikit-image>=0.19.3 in /usr/local/lib/python3.10/dist-packages (from modelscope[cv]) (0.19.3)\n",
      "Collecting videofeatures-clipit>=1.0\n",
      "  Downloading https://modelscope.oss-cn-beijing.aliyuncs.com/releases/dependencies/videofeatures_clipit-1.0-py3-none-any.whl (35 kB)\n",
      "Collecting paint-ldm\n",
      "  Downloading https://modelscope.oss-cn-beijing.aliyuncs.com/releases/dependencies/paint_ldm-0.0.0-py3-none-any.whl (75 kB)\n",
      "\u001B[2K     \u001B[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001B[0m \u001B[32m75.7/75.7 kB\u001B[0m \u001B[31m10.1 MB/s\u001B[0m eta \u001B[36m0:00:00\u001B[0m\n",
      "\u001B[?25hCollecting pytorch-lightning\n",
      "  Downloading pytorch_lightning-2.0.2-py3-none-any.whl (719 kB)\n",
      "\u001B[2K     \u001B[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001B[0m \u001B[32m719.0/719.0 kB\u001B[0m \u001B[31m55.2 MB/s\u001B[0m eta \u001B[36m0:00:00\u001B[0m\n",
      "\u001B[?25hRequirement already satisfied: torchsummary>=1.5.1 in /usr/local/lib/python3.10/dist-packages (from modelscope[cv]) (1.5.1)\n",
      "Requirement already satisfied: pandas in /usr/local/lib/python3.10/dist-packages (from modelscope[cv]) (1.5.3)\n",
      "Requirement already satisfied: tensorflow-estimator>=1.15.1 in /usr/local/lib/python3.10/dist-packages (from modelscope[cv]) (2.12.0)\n",
      "Collecting bmt-clipit>=1.0\n",
      "  Downloading https://modelscope.oss-cn-beijing.aliyuncs.com/releases/dependencies/bmt_clipit-1.0-py3-none-any.whl (42 kB)\n",
      "\u001B[2K     \u001B[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001B[0m \u001B[32m42.6/42.6 kB\u001B[0m \u001B[31m6.1 MB/s\u001B[0m eta \u001B[36m0:00:00\u001B[0m\n",
      "\u001B[?25hRequirement already satisfied: easydict in /usr/local/lib/python3.10/dist-packages (from modelscope[cv]) (1.10)\n",
      "Requirement already satisfied: tf-slim in /usr/local/lib/python3.10/dist-packages (from modelscope[cv]) (1.1.0)\n",
      "Requirement already satisfied: imageio-ffmpeg>=0.4.2 in /usr/local/lib/python3.10/dist-packages (from modelscope[cv]) (0.4.8)\n",
      "Collecting mmdet3d==1.0.0a1\n",
      "  Downloading https://modelscope.oss-cn-beijing.aliyuncs.com/releases/dependencies/cv/mmdet3d-1.0.0a1-py3-none-any.whl (837 kB)\n",
      "\u001B[2K     \u001B[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001B[0m \u001B[32m837.9/837.9 kB\u001B[0m \u001B[31m17.2 MB/s\u001B[0m eta \u001B[36m0:00:00\u001B[0m\n",
      "\u001B[?25hCollecting onnxsim\n",
      "  Downloading onnxsim-0.4.28-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (2.1 MB)\n",
      "\u001B[2K     \u001B[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001B[0m \u001B[32m2.1/2.1 MB\u001B[0m \u001B[31m98.8 MB/s\u001B[0m eta \u001B[36m0:00:00\u001B[0m\n",
      "\u001B[?25hRequirement already satisfied: torchvision in /usr/local/lib/python3.10/dist-packages (from modelscope[cv]) (0.15.1+cu118)\n",
      "Collecting torchmetrics>=0.6.2\n",
      "  Downloading torchmetrics-0.11.4-py3-none-any.whl (519 kB)\n",
      "\u001B[2K     \u001B[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001B[0m \u001B[32m519.2/519.2 kB\u001B[0m \u001B[31m49.4 MB/s\u001B[0m eta \u001B[36m0:00:00\u001B[0m\n",
      "\u001B[?25hCollecting lap\n",
      "  Downloading lap-0.4.0.tar.gz (1.5 MB)\n",
      "\u001B[2K     \u001B[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001B[0m \u001B[32m1.5/1.5 MB\u001B[0m \u001B[31m85.9 MB/s\u001B[0m eta \u001B[36m0:00:00\u001B[0m\n",
      "\u001B[?25h  Preparing metadata (setup.py) ... \u001B[?25l\u001B[?25hdone\n",
      "Requirement already satisfied: shapely in /usr/local/lib/python3.10/dist-packages (from modelscope[cv]) (2.0.1)\n",
      "Collecting mmcls>=0.21.0\n",
      "  Downloading mmcls-0.25.0-py2.py3-none-any.whl (648 kB)\n",
      "\u001B[2K     \u001B[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001B[0m \u001B[32m648.8/648.8 kB\u001B[0m \u001B[31m64.5 MB/s\u001B[0m eta \u001B[36m0:00:00\u001B[0m\n",
      "\u001B[?25hCollecting plyfile>=0.7.4\n",
      "  Downloading plyfile-0.9-py3-none-any.whl (30 kB)\n",
      "Collecting mmsegmentation<=0.30.0\n",
      "  Downloading mmsegmentation-0.30.0-py3-none-any.whl (831 kB)\n",
      "\u001B[2K     \u001B[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001B[0m \u001B[32m831.7/831.7 kB\u001B[0m \u001B[31m65.8 MB/s\u001B[0m eta \u001B[36m0:00:00\u001B[0m\n",
      "\u001B[?25hCollecting chumpy\n",
      "  Downloading chumpy-0.70.tar.gz (50 kB)\n",
      "\u001B[2K     \u001B[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001B[0m \u001B[32m50.6/50.6 kB\u001B[0m \u001B[31m6.7 MB/s\u001B[0m eta \u001B[36m0:00:00\u001B[0m\n",
      "\u001B[?25h  Preparing metadata (setup.py) ... \u001B[?25l\u001B[?25hdone\n",
      "Collecting panopticapi\n",
      "  Downloading https://modelscope.oss-cn-beijing.aliyuncs.com/releases/dependencies/panopticapi-0.1-py3-none-any.whl (23 kB)\n",
      "Collecting transformers>=4.26.0\n",
      "  Downloading transformers-4.28.1-py3-none-any.whl (7.0 MB)\n",
      "\u001B[2K     \u001B[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001B[0m \u001B[32m7.0/7.0 MB\u001B[0m \u001B[31m119.7 MB/s\u001B[0m eta \u001B[36m0:00:00\u001B[0m\n",
      "\u001B[?25hCollecting pai-easycv<0.10.0,>=0.8\n",
      "  Downloading pai_easycv-0.9.0-py3-none-any.whl (6.7 MB)\n",
      "\u001B[2K     \u001B[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001B[0m \u001B[32m6.7/6.7 MB\u001B[0m \u001B[31m116.9 MB/s\u001B[0m eta \u001B[36m0:00:00\u001B[0m\n",
      "\u001B[?25hCollecting nerfacc==0.2.2\n",
      "  Downloading nerfacc-0.2.2-py3-none-any.whl (39 kB)\n",
      "Collecting ffmpeg>=1.4\n",
      "  Downloading ffmpeg-1.4.tar.gz (5.1 kB)\n",
      "  Preparing metadata (setup.py) ... \u001B[?25l\u001B[?25hdone\n",
      "Collecting kornia>=0.5.0\n",
      "  Downloading kornia-0.6.12-py2.py3-none-any.whl (653 kB)\n",
      "\u001B[2K     \u001B[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001B[0m \u001B[32m653.4/653.4 kB\u001B[0m \u001B[31m55.2 MB/s\u001B[0m eta \u001B[36m0:00:00\u001B[0m\n",
      "\u001B[?25hCollecting PyMCubes\n",
      "  Downloading PyMCubes-0.1.4-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (274 kB)\n",
      "\u001B[2K     \u001B[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001B[0m \u001B[32m274.3/274.3 kB\u001B[0m \u001B[31m30.9 MB/s\u001B[0m eta \u001B[36m0:00:00\u001B[0m\n",
      "\u001B[?25hRequirement already satisfied: moviepy>=1.0.3 in /usr/local/lib/python3.10/dist-packages (from modelscope[cv]) (1.0.3)\n",
      "Requirement already satisfied: tensorboard in /usr/local/lib/python3.10/dist-packages (from mmdet3d==1.0.0a1->modelscope[cv]) (2.12.2)\n",
      "Collecting nuscenes-devkit\n",
      "  Downloading nuscenes_devkit-1.1.10-py3-none-any.whl (312 kB)\n",
      "\u001B[2K     \u001B[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001B[0m \u001B[32m312.9/312.9 kB\u001B[0m \u001B[31m40.0 MB/s\u001B[0m eta \u001B[36m0:00:00\u001B[0m\n",
      "\u001B[?25hCollecting trimesh\n",
      "  Downloading trimesh-2.35.39.tar.gz (281 kB)\n",
      "\u001B[2K     \u001B[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001B[0m \u001B[32m282.0/282.0 kB\u001B[0m \u001B[31m32.6 MB/s\u001B[0m eta \u001B[36m0:00:00\u001B[0m\n",
      "\u001B[?25h  Preparing metadata (setup.py) ... \u001B[?25l\u001B[?25hdone\n",
      "Collecting lyft-dataset-sdk\n",
      "  Downloading lyft_dataset_sdk-0.0.8-py2.py3-none-any.whl (32 kB)\n",
      "Collecting ninja>=1.10.2.3\n",
      "  Using cached ninja-1.11.1-py2.py3-none-manylinux_2_12_x86_64.manylinux2010_x86_64.whl (145 kB)\n",
      "Requirement already satisfied: torch in /usr/local/lib/python3.10/dist-packages (from nerfacc==0.2.2->modelscope[cv]) (2.0.0+cu118)\n",
      "Requirement already satisfied: rich>=12 in /usr/local/lib/python3.10/dist-packages (from nerfacc==0.2.2->modelscope[cv]) (13.3.4)\n",
      "Collecting pybind11>=2.10.0\n",
      "  Downloading pybind11-2.10.4-py3-none-any.whl (222 kB)\n",
      "\u001B[2K     \u001B[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001B[0m \u001B[32m222.3/222.3 kB\u001B[0m \u001B[31m30.6 MB/s\u001B[0m eta \u001B[36m0:00:00\u001B[0m\n",
      "\u001B[?25hRequirement already satisfied: qudida>=0.0.4 in /usr/local/lib/python3.10/dist-packages (from albumentations>=1.0.3->modelscope[cv]) (0.0.4)\n",
      "Requirement already satisfied: opencv-python-headless>=4.1.1 in /usr/local/lib/python3.10/dist-packages (from albumentations>=1.0.3->modelscope[cv]) (4.7.0.72)\n",
      "Collecting aiohttp\n",
      "  Downloading aiohttp-3.8.4-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (1.0 MB)\n",
      "\u001B[2K     \u001B[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001B[0m \u001B[32m1.0/1.0 MB\u001B[0m \u001B[31m79.0 MB/s\u001B[0m eta \u001B[36m0:00:00\u001B[0m\n",
      "\u001B[?25hCollecting dill<0.3.7\n",
      "  Downloading dill-0.3.6-py3-none-any.whl (110 kB)\n",
      "\u001B[2K     \u001B[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001B[0m \u001B[32m110.5/110.5 kB\u001B[0m \u001B[31m16.5 MB/s\u001B[0m eta \u001B[36m0:00:00\u001B[0m\n",
      "\u001B[?25hRequirement already satisfied: packaging in /usr/local/lib/python3.10/dist-packages (from datasets<=2.8.0,>=2.7.0->modelscope[cv]) (23.1)\n",
      "Collecting huggingface-hub<1.0.0,>=0.2.0\n",
      "  Downloading huggingface_hub-0.14.1-py3-none-any.whl (224 kB)\n",
      "\u001B[2K     \u001B[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001B[0m \u001B[32m224.5/224.5 kB\u001B[0m \u001B[31m29.3 MB/s\u001B[0m eta \u001B[36m0:00:00\u001B[0m\n",
      "\u001B[?25hCollecting xxhash\n",
      "  Downloading xxhash-3.2.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (212 kB)\n",
      "\u001B[2K     \u001B[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001B[0m \u001B[32m212.5/212.5 kB\u001B[0m \u001B[31m25.2 MB/s\u001B[0m eta \u001B[36m0:00:00\u001B[0m\n",
      "\u001B[?25hCollecting multiprocess\n",
      "  Downloading multiprocess-0.70.14-py310-none-any.whl (134 kB)\n",
      "\u001B[2K     \u001B[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001B[0m \u001B[32m134.3/134.3 kB\u001B[0m \u001B[31m18.3 MB/s\u001B[0m eta \u001B[36m0:00:00\u001B[0m\n",
      "\u001B[?25hCollecting responses<0.19\n",
      "  Downloading responses-0.18.0-py3-none-any.whl (38 kB)\n",
      "Requirement already satisfied: fsspec[http]>=2021.11.1 in /usr/local/lib/python3.10/dist-packages (from datasets<=2.8.0,>=2.7.0->modelscope[cv]) (2023.4.0)\n",
      "Requirement already satisfied: pip in /usr/local/lib/python3.10/dist-packages (from fastai>=1.0.51->modelscope[cv]) (23.0.1)\n",
      "Requirement already satisfied: fastcore<1.6,>=1.5.29 in /usr/local/lib/python3.10/dist-packages (from fastai>=1.0.51->modelscope[cv]) (1.5.29)\n",
      "Requirement already satisfied: matplotlib in /usr/local/lib/python3.10/dist-packages (from fastai>=1.0.51->modelscope[cv]) (3.7.1)\n",
      "Requirement already satisfied: spacy<4 in /usr/local/lib/python3.10/dist-packages (from fastai>=1.0.51->modelscope[cv]) (3.5.2)\n",
      "Requirement already satisfied: fastprogress>=0.2.4 in /usr/local/lib/python3.10/dist-packages (from fastai>=1.0.51->modelscope[cv]) (1.0.3)\n",
      "Requirement already satisfied: fastdownload<2,>=0.0.5 in /usr/local/lib/python3.10/dist-packages (from fastai>=1.0.51->modelscope[cv]) (0.0.7)\n",
      "Requirement already satisfied: future in /usr/local/lib/python3.10/dist-packages (from ffmpeg-python>=0.2.0->modelscope[cv]) (0.18.3)\n",
      "Requirement already satisfied: six in /usr/local/lib/python3.10/dist-packages (from imgaug>=0.4.0->modelscope[cv]) (1.16.0)\n",
      "Requirement already satisfied: pycocotools in /usr/local/lib/python3.10/dist-packages (from mmdet<=2.28.2->modelscope[cv]) (2.0.6)\n",
      "Collecting terminaltables\n",
      "  Downloading terminaltables-3.1.10-py2.py3-none-any.whl (15 kB)\n",
      "Requirement already satisfied: prettytable in /usr/local/lib/python3.10/dist-packages (from mmsegmentation<=0.30.0->modelscope[cv]) (0.7.2)\n",
      "Requirement already satisfied: decorator<5.0,>=4.0.2 in /usr/local/lib/python3.10/dist-packages (from moviepy>=1.0.3->modelscope[cv]) (4.4.2)\n",
      "Requirement already satisfied: proglog<=1.0.0 in /usr/local/lib/python3.10/dist-packages (from moviepy>=1.0.3->modelscope[cv]) (0.1.10)\n",
      "Collecting coloredlogs\n",
      "  Downloading coloredlogs-15.0.1-py2.py3-none-any.whl (46 kB)\n",
      "\u001B[2K     \u001B[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001B[0m \u001B[32m46.0/46.0 kB\u001B[0m \u001B[31m6.7 MB/s\u001B[0m eta \u001B[36m0:00:00\u001B[0m\n",
      "\u001B[?25hRequirement already satisfied: sympy in /usr/local/lib/python3.10/dist-packages (from onnxruntime>=1.10->modelscope[cv]) (1.11.1)\n",
      "Requirement already satisfied: protobuf in /usr/local/lib/python3.10/dist-packages (from onnxruntime>=1.10->modelscope[cv]) (3.20.3)\n",
      "Requirement already satisfied: flatbuffers in /usr/local/lib/python3.10/dist-packages (from onnxruntime>=1.10->modelscope[cv]) (23.3.3)\n",
      "Collecting sentencepiece\n",
      "  Downloading sentencepiece-0.1.99-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (1.3 MB)\n",
      "\u001B[2K     \u001B[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001B[0m \u001B[32m1.3/1.3 MB\u001B[0m \u001B[31m77.5 MB/s\u001B[0m eta \u001B[36m0:00:00\u001B[0m\n",
      "\u001B[?25hRequirement already satisfied: h5py in /usr/local/lib/python3.10/dist-packages (from pai-easycv<0.10.0,>=0.8->modelscope[cv]) (3.8.0)\n",
      "Collecting decord\n",
      "  Downloading decord-0.6.0-py3-none-manylinux2010_x86_64.whl (13.6 MB)\n",
      "\u001B[2K     \u001B[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001B[0m \u001B[32m13.6/13.6 MB\u001B[0m \u001B[31m101.8 MB/s\u001B[0m eta \u001B[36m0:00:00\u001B[0m\n",
      "\u001B[?25hCollecting wget\n",
      "  Downloading wget-3.2.zip (10 kB)\n",
      "  Preparing metadata (setup.py) ... \u001B[?25l\u001B[?25hdone\n",
      "Collecting thop\n",
      "  Downloading thop-0.1.1.post2209072238-py3-none-any.whl (15 kB)\n",
      "Collecting json-tricks\n",
      "  Downloading json_tricks-3.16.1-py2.py3-none-any.whl (27 kB)\n",
      "Collecting timm>=0.4.9\n",
      "  Downloading timm-0.5.4-py3-none-any.whl (431 kB)\n",
      "\u001B[2K     \u001B[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001B[0m \u001B[32m431.5/431.5 kB\u001B[0m \u001B[31m42.6 MB/s\u001B[0m eta \u001B[36m0:00:00\u001B[0m\n",
      "\u001B[?25hCollecting xtcocotools\n",
      "  Downloading xtcocotools-1.13-cp310-cp310-manylinux1_x86_64.whl (286 kB)\n",
      "\u001B[2K     \u001B[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001B[0m \u001B[32m286.4/286.4 kB\u001B[0m \u001B[31m33.1 MB/s\u001B[0m eta \u001B[36m0:00:00\u001B[0m\n",
      "\u001B[?25hCollecting fvcore\n",
      "  Downloading fvcore-0.1.5.post20221221.tar.gz (50 kB)\n",
      "\u001B[2K     \u001B[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001B[0m \u001B[32m50.2/50.2 kB\u001B[0m \u001B[31m6.6 MB/s\u001B[0m eta \u001B[36m0:00:00\u001B[0m\n",
      "\u001B[?25h  Preparing metadata (setup.py) ... \u001B[?25l\u001B[?25hdone\n",
      "Collecting sklearn\n",
      "  Downloading sklearn-0.0.post4.tar.gz (3.6 kB)\n",
      "  Preparing metadata (setup.py) ... \u001B[?25l\u001B[?25hdone\n",
      "Collecting dataclasses\n",
      "  Downloading dataclasses-0.6-py3-none-any.whl (14 kB)\n",
      "Collecting rapidfuzz\n",
      "  Downloading rapidfuzz-3.0.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (3.0 MB)\n",
      "\u001B[2K     \u001B[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001B[0m \u001B[32m3.0/3.0 MB\u001B[0m \u001B[31m64.7 MB/s\u001B[0m eta \u001B[36m0:00:00\u001B[0m\n",
      "\u001B[?25hCollecting pyclipper\n",
      "  Downloading pyclipper-1.3.0.post4-cp310-cp310-manylinux_2_12_x86_64.manylinux2010_x86_64.whl (813 kB)\n",
      "\u001B[2K     \u001B[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001B[0m \u001B[32m813.9/813.9 kB\u001B[0m \u001B[31m69.5 MB/s\u001B[0m eta \u001B[36m0:00:00\u001B[0m\n",
      "\u001B[?25hCollecting pytorch-metric-learning>=0.9.89\n",
      "  Downloading pytorch_metric_learning-2.1.1-py3-none-any.whl (110 kB)\n",
      "\u001B[2K     \u001B[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001B[0m \u001B[32m110.8/110.8 kB\u001B[0m \u001B[31m16.0 MB/s\u001B[0m eta \u001B[36m0:00:00\u001B[0m\n",
      "\u001B[?25hCollecting yacs\n",
      "  Downloading yacs-0.1.8-py3-none-any.whl (14 kB)\n",
      "Requirement already satisfied: idna<4,>=2.5 in /usr/local/lib/python3.10/dist-packages (from requests->modelscope[cv]) (3.4)\n",
      "Requirement already satisfied: certifi>=2017.4.17 in /usr/local/lib/python3.10/dist-packages (from requests->modelscope[cv]) (2022.12.7)\n",
      "Requirement already satisfied: urllib3<1.27,>=1.21.1 in /usr/local/lib/python3.10/dist-packages (from requests->modelscope[cv]) (1.26.15)\n",
      "Requirement already satisfied: charset-normalizer~=2.0.0 in /usr/local/lib/python3.10/dist-packages (from requests->modelscope[cv]) (2.0.12)\n",
      "Requirement already satisfied: PyWavelets>=1.1.1 in /usr/local/lib/python3.10/dist-packages (from scikit-image>=0.19.3->modelscope[cv]) (1.4.1)\n",
      "Requirement already satisfied: tifffile>=2019.7.26 in /usr/local/lib/python3.10/dist-packages (from scikit-image>=0.19.3->modelscope[cv]) (2023.4.12)\n",
      "Requirement already satisfied: threadpoolctl>=2.0.0 in /usr/local/lib/python3.10/dist-packages (from scikit-learn>=0.20.1->modelscope[cv]) (3.1.0)\n",
      "Requirement already satisfied: joblib>=1.1.1 in /usr/local/lib/python3.10/dist-packages (from scikit-learn>=0.20.1->modelscope[cv]) (1.2.0)\n",
      "Requirement already satisfied: typing-extensions in /usr/local/lib/python3.10/dist-packages (from torch->nerfacc==0.2.2->modelscope[cv]) (4.5.0)\n",
      "Requirement already satisfied: triton==2.0.0 in /usr/local/lib/python3.10/dist-packages (from torch->nerfacc==0.2.2->modelscope[cv]) (2.0.0)\n",
      "Requirement already satisfied: jinja2 in /usr/local/lib/python3.10/dist-packages (from torch->nerfacc==0.2.2->modelscope[cv]) (3.1.2)\n",
      "Requirement already satisfied: lit in /usr/local/lib/python3.10/dist-packages (from triton==2.0.0->torch->nerfacc==0.2.2->modelscope[cv]) (16.0.2)\n",
      "Requirement already satisfied: cmake in /usr/local/lib/python3.10/dist-packages (from triton==2.0.0->torch->nerfacc==0.2.2->modelscope[cv]) (3.25.2)\n",
      "Collecting tokenizers!=0.11.3,<0.14,>=0.11.1\n",
      "  Downloading tokenizers-0.13.3-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (7.8 MB)\n",
      "\u001B[2K     \u001B[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001B[0m \u001B[32m7.8/7.8 MB\u001B[0m \u001B[31m120.8 MB/s\u001B[0m eta \u001B[36m0:00:00\u001B[0m\n",
      "\u001B[?25hCollecting blobfile>=1.0.5\n",
      "  Downloading blobfile-2.0.2-py3-none-any.whl (74 kB)\n",
      "\u001B[2K     \u001B[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001B[0m \u001B[32m74.5/74.5 kB\u001B[0m \u001B[31m11.2 MB/s\u001B[0m eta \u001B[36m0:00:00\u001B[0m\n",
      "\u001B[?25hCollecting importlib-metadata\n",
      "  Downloading importlib_metadata-6.6.0-py3-none-any.whl (22 kB)\n",
      "Requirement already satisfied: opt_einsum in /usr/local/lib/python3.10/dist-packages (from easyrobust->modelscope[cv]) (3.3.0)\n",
      "Requirement already satisfied: wcwidth>=0.2.5 in /usr/local/lib/python3.10/dist-packages (from ftfy->modelscope[cv]) (0.2.6)\n",
      "Requirement already satisfied: absl-py in /usr/local/lib/python3.10/dist-packages (from ml-collections->modelscope[cv]) (1.4.0)\n",
      "Requirement already satisfied: contextlib2 in /usr/local/lib/python3.10/dist-packages (from ml-collections->modelscope[cv]) (0.6.0.post1)\n",
      "Requirement already satisfied: llvmlite<0.40,>=0.39.0dev0 in /usr/local/lib/python3.10/dist-packages (from numba->modelscope[cv]) (0.39.1)\n",
      "Collecting antlr4-python3-runtime==4.9.*\n",
      "  Downloading antlr4-python3-runtime-4.9.3.tar.gz (117 kB)\n",
      "\u001B[2K     \u001B[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001B[0m \u001B[32m117.0/117.0 kB\u001B[0m \u001B[31m17.7 MB/s\u001B[0m eta \u001B[36m0:00:00\u001B[0m\n",
      "\u001B[?25h  Preparing metadata (setup.py) ... \u001B[?25l\u001B[?25hdone\n",
      "Collecting crcmod>=1.7\n",
      "  Downloading crcmod-1.7.tar.gz (89 kB)\n",
      "\u001B[2K     \u001B[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001B[0m \u001B[32m89.7/89.7 kB\u001B[0m \u001B[31m12.1 MB/s\u001B[0m eta \u001B[36m0:00:00\u001B[0m\n",
      "\u001B[?25h  Preparing metadata (setup.py) ... \u001B[?25l\u001B[?25hdone\n",
      "Collecting pycryptodome>=3.4.7\n",
      "  Downloading pycryptodome-3.17-cp35-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (2.1 MB)\n",
      "\u001B[2K     \u001B[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001B[0m \u001B[32m2.1/2.1 MB\u001B[0m \u001B[31m91.6 MB/s\u001B[0m eta \u001B[36m0:00:00\u001B[0m\n",
      "\u001B[?25hCollecting aliyun-python-sdk-kms>=2.4.1\n",
      "  Downloading aliyun_python_sdk_kms-2.16.0-py2.py3-none-any.whl (67 kB)\n",
      "\u001B[2K     \u001B[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001B[0m \u001B[32m67.4/67.4 kB\u001B[0m \u001B[31m10.7 MB/s\u001B[0m eta \u001B[36m0:00:00\u001B[0m\n",
      "\u001B[?25hCollecting aliyun-python-sdk-core>=2.13.12\n",
      "  Downloading aliyun-python-sdk-core-2.13.36.tar.gz (440 kB)\n",
      "\u001B[2K     \u001B[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001B[0m \u001B[32m440.5/440.5 kB\u001B[0m \u001B[31m42.8 MB/s\u001B[0m eta \u001B[36m0:00:00\u001B[0m\n",
      "\u001B[?25h  Preparing metadata (setup.py) ... \u001B[?25l\u001B[?25hdone\n",
      "Requirement already satisfied: pytz>=2020.1 in /usr/local/lib/python3.10/dist-packages (from pandas->modelscope[cv]) (2022.7.1)\n",
      "Collecting lightning-utilities>=0.7.0\n",
      "  Downloading lightning_utilities-0.8.0-py3-none-any.whl (20 kB)\n",
      "Requirement already satisfied: tomli>=2.0.1 in /usr/local/lib/python3.10/dist-packages (from yapf->modelscope[cv]) (2.0.1)\n",
      "Collecting jmespath<1.0.0,>=0.9.3\n",
      "  Downloading jmespath-0.10.0-py2.py3-none-any.whl (24 kB)\n",
      "Requirement already satisfied: cryptography>=2.6.0 in /usr/local/lib/python3.10/dist-packages (from aliyun-python-sdk-core>=2.13.12->oss2->modelscope[cv]) (40.0.2)\n",
      "Collecting pycryptodomex~=3.8\n",
      "  Downloading pycryptodomex-3.17-cp35-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (2.1 MB)\n",
      "\u001B[2K     \u001B[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001B[0m \u001B[32m2.1/2.1 MB\u001B[0m \u001B[31m97.2 MB/s\u001B[0m eta \u001B[36m0:00:00\u001B[0m\n",
      "\u001B[?25hRequirement already satisfied: lxml~=4.9 in /usr/local/lib/python3.10/dist-packages (from blobfile>=1.0.5->ddpm-guided-diffusion->modelscope[cv]) (4.9.2)\n",
      "Collecting aiosignal>=1.1.2\n",
      "  Downloading aiosignal-1.3.1-py3-none-any.whl (7.6 kB)\n",
      "Collecting multidict<7.0,>=4.5\n",
      "  Downloading multidict-6.0.4-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (114 kB)\n",
      "\u001B[2K     \u001B[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001B[0m \u001B[32m114.5/114.5 kB\u001B[0m \u001B[31m8.1 MB/s\u001B[0m eta \u001B[36m0:00:00\u001B[0m\n",
      "\u001B[?25hCollecting async-timeout<5.0,>=4.0.0a3\n",
      "  Downloading async_timeout-4.0.2-py3-none-any.whl (5.8 kB)\n",
      "Collecting frozenlist>=1.1.1\n",
      "  Downloading frozenlist-1.3.3-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl (149 kB)\n",
      "\u001B[2K     \u001B[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001B[0m \u001B[32m149.6/149.6 kB\u001B[0m \u001B[31m22.1 MB/s\u001B[0m eta \u001B[36m0:00:00\u001B[0m\n",
      "\u001B[?25hCollecting yarl<2.0,>=1.0\n",
      "  Downloading yarl-1.9.2-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (268 kB)\n",
      "\u001B[2K     \u001B[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001B[0m \u001B[32m268.8/268.8 kB\u001B[0m \u001B[31m37.2 MB/s\u001B[0m eta \u001B[36m0:00:00\u001B[0m\n",
      "\u001B[?25hRequirement already satisfied: cycler>=0.10 in /usr/local/lib/python3.10/dist-packages (from matplotlib->fastai>=1.0.51->modelscope[cv]) (0.11.0)\n",
      "Requirement already satisfied: pyparsing>=2.3.1 in /usr/local/lib/python3.10/dist-packages (from matplotlib->fastai>=1.0.51->modelscope[cv]) (3.0.9)\n",
      "Requirement already satisfied: kiwisolver>=1.0.1 in /usr/local/lib/python3.10/dist-packages (from matplotlib->fastai>=1.0.51->modelscope[cv]) (1.4.4)\n",
      "Requirement already satisfied: contourpy>=1.0.1 in /usr/local/lib/python3.10/dist-packages (from matplotlib->fastai>=1.0.51->modelscope[cv]) (1.0.7)\n",
      "Requirement already satisfied: fonttools>=4.22.0 in /usr/local/lib/python3.10/dist-packages (from matplotlib->fastai>=1.0.51->modelscope[cv]) (4.39.3)\n",
      "Requirement already satisfied: markdown-it-py<3.0.0,>=2.2.0 in /usr/local/lib/python3.10/dist-packages (from rich>=12->nerfacc==0.2.2->modelscope[cv]) (2.2.0)\n",
      "Requirement already satisfied: pygments<3.0.0,>=2.13.0 in /usr/local/lib/python3.10/dist-packages (from rich>=12->nerfacc==0.2.2->modelscope[cv]) (2.14.0)\n",
      "Requirement already satisfied: langcodes<4.0.0,>=3.2.0 in /usr/local/lib/python3.10/dist-packages (from spacy<4->fastai>=1.0.51->modelscope[cv]) (3.3.0)\n",
      "Requirement already satisfied: spacy-loggers<2.0.0,>=1.0.0 in /usr/local/lib/python3.10/dist-packages (from spacy<4->fastai>=1.0.51->modelscope[cv]) (1.0.4)\n",
      "Requirement already satisfied: spacy-legacy<3.1.0,>=3.0.11 in /usr/local/lib/python3.10/dist-packages (from spacy<4->fastai>=1.0.51->modelscope[cv]) (3.0.12)\n",
      "Requirement already satisfied: typer<0.8.0,>=0.3.0 in /usr/local/lib/python3.10/dist-packages (from spacy<4->fastai>=1.0.51->modelscope[cv]) (0.7.0)\n",
      "Requirement already satisfied: smart-open<7.0.0,>=5.2.1 in /usr/local/lib/python3.10/dist-packages (from spacy<4->fastai>=1.0.51->modelscope[cv]) (6.3.0)\n",
      "Requirement already satisfied: thinc<8.2.0,>=8.1.8 in /usr/local/lib/python3.10/dist-packages (from spacy<4->fastai>=1.0.51->modelscope[cv]) (8.1.9)\n",
      "Requirement already satisfied: pathy>=0.10.0 in /usr/local/lib/python3.10/dist-packages (from spacy<4->fastai>=1.0.51->modelscope[cv]) (0.10.1)\n",
      "Requirement already satisfied: wasabi<1.2.0,>=0.9.1 in /usr/local/lib/python3.10/dist-packages (from spacy<4->fastai>=1.0.51->modelscope[cv]) (1.1.1)\n",
      "Requirement already satisfied: srsly<3.0.0,>=2.4.3 in /usr/local/lib/python3.10/dist-packages (from spacy<4->fastai>=1.0.51->modelscope[cv]) (2.4.6)\n",
      "Requirement already satisfied: pydantic!=1.8,!=1.8.1,<1.11.0,>=1.7.4 in /usr/local/lib/python3.10/dist-packages (from spacy<4->fastai>=1.0.51->modelscope[cv]) (1.10.7)\n",
      "Requirement already satisfied: catalogue<2.1.0,>=2.0.6 in /usr/local/lib/python3.10/dist-packages (from spacy<4->fastai>=1.0.51->modelscope[cv]) (2.0.8)\n",
      "Requirement already satisfied: preshed<3.1.0,>=3.0.2 in /usr/local/lib/python3.10/dist-packages (from spacy<4->fastai>=1.0.51->modelscope[cv]) (3.0.8)\n",
      "Requirement already satisfied: murmurhash<1.1.0,>=0.28.0 in /usr/local/lib/python3.10/dist-packages (from spacy<4->fastai>=1.0.51->modelscope[cv]) (1.0.9)\n",
      "Requirement already satisfied: cymem<2.1.0,>=2.0.2 in /usr/local/lib/python3.10/dist-packages (from spacy<4->fastai>=1.0.51->modelscope[cv]) (2.0.7)\n",
      "Collecting humanfriendly>=9.1\n",
      "  Downloading humanfriendly-10.0-py2.py3-none-any.whl (86 kB)\n",
      "\u001B[2K     \u001B[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001B[0m \u001B[32m86.8/86.8 kB\u001B[0m \u001B[31m15.2 MB/s\u001B[0m eta \u001B[36m0:00:00\u001B[0m\n",
      "\u001B[?25hRequirement already satisfied: termcolor>=1.1 in /usr/local/lib/python3.10/dist-packages (from fvcore->pai-easycv<0.10.0,>=0.8->modelscope[cv]) (2.3.0)\n",
      "Requirement already satisfied: tabulate in /usr/local/lib/python3.10/dist-packages (from fvcore->pai-easycv<0.10.0,>=0.8->modelscope[cv]) (0.8.10)\n",
      "Collecting iopath>=0.1.7\n",
      "  Downloading iopath-0.1.10.tar.gz (42 kB)\n",
      "\u001B[2K     \u001B[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001B[0m \u001B[32m42.2/42.2 kB\u001B[0m \u001B[31m5.1 MB/s\u001B[0m eta \u001B[36m0:00:00\u001B[0m\n",
      "\u001B[?25h  Preparing metadata (setup.py) ... \u001B[?25l\u001B[?25hdone\n",
      "Requirement already satisfied: zipp>=0.5 in /usr/local/lib/python3.10/dist-packages (from importlib-metadata->diffusers->modelscope[cv]) (3.15.0)\n",
      "Collecting flake8\n",
      "  Downloading flake8-6.0.0-py2.py3-none-any.whl (57 kB)\n",
      "\u001B[2K     \u001B[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001B[0m \u001B[32m57.8/57.8 kB\u001B[0m \u001B[31m3.9 MB/s\u001B[0m eta \u001B[36m0:00:00\u001B[0m\n",
      "\u001B[?25hRequirement already satisfied: cachetools>=3.1.0 in /usr/local/lib/python3.10/dist-packages (from lyft-dataset-sdk->mmdet3d==1.0.0a1->modelscope[cv]) (5.3.0)\n",
      "Collecting pyquaternion>=0.9.5\n",
      "  Downloading pyquaternion-0.9.9-py3-none-any.whl (14 kB)\n",
      "Requirement already satisfied: pytest in /usr/local/lib/python3.10/dist-packages (from lyft-dataset-sdk->mmdet3d==1.0.0a1->modelscope[cv]) (7.2.2)\n",
      "Requirement already satisfied: plotly in /usr/local/lib/python3.10/dist-packages (from lyft-dataset-sdk->mmdet3d==1.0.0a1->modelscope[cv]) (5.13.1)\n",
      "Collecting black\n",
      "  Downloading black-23.3.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (1.7 MB)\n",
      "\u001B[2K     \u001B[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001B[0m \u001B[32m1.7/1.7 MB\u001B[0m \u001B[31m86.3 MB/s\u001B[0m eta \u001B[36m0:00:00\u001B[0m\n",
      "\u001B[?25hCollecting fire\n",
      "  Downloading fire-0.5.0.tar.gz (88 kB)\n",
      "\u001B[2K     \u001B[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001B[0m \u001B[32m88.3/88.3 kB\u001B[0m \u001B[31m13.2 MB/s\u001B[0m eta \u001B[36m0:00:00\u001B[0m\n",
      "\u001B[?25h  Preparing metadata (setup.py) ... \u001B[?25l\u001B[?25hdone\n",
      "Collecting shapely\n",
      "  Downloading Shapely-1.8.5-cp310-cp310-manylinux_2_12_x86_64.manylinux2010_x86_64.whl (2.0 MB)\n",
      "\u001B[2K     \u001B[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001B[0m \u001B[32m2.0/2.0 MB\u001B[0m \u001B[31m96.1 MB/s\u001B[0m eta \u001B[36m0:00:00\u001B[0m\n",
      "\u001B[?25hCollecting descartes\n",
      "  Downloading descartes-1.1.0-py3-none-any.whl (5.8 kB)\n",
      "Collecting jupyter\n",
      "  Downloading jupyter-1.0.0-py2.py3-none-any.whl (2.7 kB)\n",
      "Collecting matplotlib\n",
      "  Downloading matplotlib-3.5.2-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (11.9 MB)\n",
      "\u001B[2K     \u001B[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001B[0m \u001B[32m11.9/11.9 MB\u001B[0m \u001B[31m91.7 MB/s\u001B[0m eta \u001B[36m0:00:00\u001B[0m\n",
      "\u001B[?25hRequirement already satisfied: mpmath>=0.19 in /usr/local/lib/python3.10/dist-packages (from sympy->onnxruntime>=1.10->modelscope[cv]) (1.3.0)\n",
      "Requirement already satisfied: tensorboard-plugin-wit>=1.6.0 in /usr/local/lib/python3.10/dist-packages (from tensorboard->mmdet3d==1.0.0a1->modelscope[cv]) (1.8.1)\n",
      "Requirement already satisfied: markdown>=2.6.8 in /usr/local/lib/python3.10/dist-packages (from tensorboard->mmdet3d==1.0.0a1->modelscope[cv]) (3.4.3)\n",
      "Requirement already satisfied: google-auth<3,>=1.6.3 in /usr/local/lib/python3.10/dist-packages (from tensorboard->mmdet3d==1.0.0a1->modelscope[cv]) (2.17.3)\n",
      "Requirement already satisfied: grpcio>=1.48.2 in /usr/local/lib/python3.10/dist-packages (from tensorboard->mmdet3d==1.0.0a1->modelscope[cv]) (1.54.0)\n",
      "Requirement already satisfied: tensorboard-data-server<0.8.0,>=0.7.0 in /usr/local/lib/python3.10/dist-packages (from tensorboard->mmdet3d==1.0.0a1->modelscope[cv]) (0.7.0)\n",
      "Requirement already satisfied: wheel>=0.26 in /usr/local/lib/python3.10/dist-packages (from tensorboard->mmdet3d==1.0.0a1->modelscope[cv]) (0.40.0)\n",
      "Requirement already satisfied: werkzeug>=1.0.1 in /usr/local/lib/python3.10/dist-packages (from tensorboard->mmdet3d==1.0.0a1->modelscope[cv]) (2.3.0)\n",
      "Requirement already satisfied: google-auth-oauthlib<1.1,>=0.5 in /usr/local/lib/python3.10/dist-packages (from tensorboard->mmdet3d==1.0.0a1->modelscope[cv]) (1.0.0)\n",
      "Requirement already satisfied: cython>=0.27.3 in /usr/local/lib/python3.10/dist-packages (from xtcocotools->pai-easycv<0.10.0,>=0.8->modelscope[cv]) (0.29.34)\n",
      "Requirement already satisfied: cffi>=1.12 in /usr/local/lib/python3.10/dist-packages (from cryptography>=2.6.0->aliyun-python-sdk-core>=2.13.12->oss2->modelscope[cv]) (1.15.1)\n",
      "Requirement already satisfied: rsa<5,>=3.1.4 in /usr/local/lib/python3.10/dist-packages (from google-auth<3,>=1.6.3->tensorboard->mmdet3d==1.0.0a1->modelscope[cv]) (4.9)\n",
      "Requirement already satisfied: pyasn1-modules>=0.2.1 in /usr/local/lib/python3.10/dist-packages (from google-auth<3,>=1.6.3->tensorboard->mmdet3d==1.0.0a1->modelscope[cv]) (0.3.0)\n",
      "Requirement already satisfied: requests-oauthlib>=0.7.0 in /usr/local/lib/python3.10/dist-packages (from google-auth-oauthlib<1.1,>=0.5->tensorboard->mmdet3d==1.0.0a1->modelscope[cv]) (1.3.1)\n",
      "Collecting portalocker\n",
      "  Downloading portalocker-2.7.0-py2.py3-none-any.whl (15 kB)\n",
      "Requirement already satisfied: mdurl~=0.1 in /usr/local/lib/python3.10/dist-packages (from markdown-it-py<3.0.0,>=2.2.0->rich>=12->nerfacc==0.2.2->modelscope[cv]) (0.1.2)\n",
      "Requirement already satisfied: confection<1.0.0,>=0.0.1 in /usr/local/lib/python3.10/dist-packages (from thinc<8.2.0,>=8.1.8->spacy<4->fastai>=1.0.51->modelscope[cv]) (0.0.4)\n",
      "Requirement already satisfied: blis<0.8.0,>=0.7.8 in /usr/local/lib/python3.10/dist-packages (from thinc<8.2.0,>=8.1.8->spacy<4->fastai>=1.0.51->modelscope[cv]) (0.7.9)\n",
      "Requirement already satisfied: click<9.0.0,>=7.1.1 in /usr/local/lib/python3.10/dist-packages (from typer<0.8.0,>=0.3.0->spacy<4->fastai>=1.0.51->modelscope[cv]) (8.1.3)\n",
      "Requirement already satisfied: MarkupSafe>=2.1.1 in /usr/local/lib/python3.10/dist-packages (from werkzeug>=1.0.1->tensorboard->mmdet3d==1.0.0a1->modelscope[cv]) (2.1.2)\n",
      "Collecting mypy-extensions>=0.4.3\n",
      "  Downloading mypy_extensions-1.0.0-py3-none-any.whl (4.7 kB)\n",
      "Collecting pathspec>=0.9.0\n",
      "  Downloading pathspec-0.11.1-py3-none-any.whl (29 kB)\n",
      "Requirement already satisfied: platformdirs>=2 in /usr/local/lib/python3.10/dist-packages (from black->lyft-dataset-sdk->mmdet3d==1.0.0a1->modelscope[cv]) (3.3.0)\n",
      "Collecting mccabe<0.8.0,>=0.7.0\n",
      "  Downloading mccabe-0.7.0-py2.py3-none-any.whl (7.3 kB)\n",
      "Collecting pycodestyle<2.11.0,>=2.10.0\n",
      "  Downloading pycodestyle-2.10.0-py2.py3-none-any.whl (41 kB)\n",
      "\u001B[2K     \u001B[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001B[0m \u001B[32m41.3/41.3 kB\u001B[0m \u001B[31m5.9 MB/s\u001B[0m eta \u001B[36m0:00:00\u001B[0m\n",
      "\u001B[?25hCollecting pyflakes<3.1.0,>=3.0.0\n",
      "  Downloading pyflakes-3.0.1-py2.py3-none-any.whl (62 kB)\n",
      "\u001B[2K     \u001B[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001B[0m \u001B[32m62.8/62.8 kB\u001B[0m \u001B[31m9.9 MB/s\u001B[0m eta \u001B[36m0:00:00\u001B[0m\n",
      "\u001B[?25hCollecting qtconsole\n",
      "  Downloading qtconsole-5.4.2-py3-none-any.whl (121 kB)\n",
      "\u001B[2K     \u001B[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001B[0m \u001B[32m121.2/121.2 kB\u001B[0m \u001B[31m16.7 MB/s\u001B[0m eta \u001B[36m0:00:00\u001B[0m\n",
      "\u001B[?25hRequirement already satisfied: ipykernel in /usr/local/lib/python3.10/dist-packages (from jupyter->nuscenes-devkit->mmdet3d==1.0.0a1->modelscope[cv]) (5.5.6)\n",
      "Requirement already satisfied: jupyter-console in /usr/local/lib/python3.10/dist-packages (from jupyter->nuscenes-devkit->mmdet3d==1.0.0a1->modelscope[cv]) (6.1.0)\n",
      "Requirement already satisfied: ipywidgets in /usr/local/lib/python3.10/dist-packages (from jupyter->nuscenes-devkit->mmdet3d==1.0.0a1->modelscope[cv]) (7.7.1)\n",
      "Requirement already satisfied: nbconvert in /usr/local/lib/python3.10/dist-packages (from jupyter->nuscenes-devkit->mmdet3d==1.0.0a1->modelscope[cv]) (6.5.4)\n",
      "Requirement already satisfied: notebook in /usr/local/lib/python3.10/dist-packages (from jupyter->nuscenes-devkit->mmdet3d==1.0.0a1->modelscope[cv]) (6.4.8)\n",
      "Requirement already satisfied: tenacity>=6.2.0 in /usr/local/lib/python3.10/dist-packages (from plotly->lyft-dataset-sdk->mmdet3d==1.0.0a1->modelscope[cv]) (8.2.2)\n",
      "Requirement already satisfied: iniconfig in /usr/local/lib/python3.10/dist-packages (from pytest->lyft-dataset-sdk->mmdet3d==1.0.0a1->modelscope[cv]) (2.0.0)\n",
      "Requirement already satisfied: pluggy<2.0,>=0.12 in /usr/local/lib/python3.10/dist-packages (from pytest->lyft-dataset-sdk->mmdet3d==1.0.0a1->modelscope[cv]) (1.0.0)\n",
      "Requirement already satisfied: exceptiongroup>=1.0.0rc8 in /usr/local/lib/python3.10/dist-packages (from pytest->lyft-dataset-sdk->mmdet3d==1.0.0a1->modelscope[cv]) (1.1.1)\n",
      "Requirement already satisfied: pycparser in /usr/local/lib/python3.10/dist-packages (from cffi>=1.12->cryptography>=2.6.0->aliyun-python-sdk-core>=2.13.12->oss2->modelscope[cv]) (2.21)\n",
      "Requirement already satisfied: pyasn1<0.6.0,>=0.4.6 in /usr/local/lib/python3.10/dist-packages (from pyasn1-modules>=0.2.1->google-auth<3,>=1.6.3->tensorboard->mmdet3d==1.0.0a1->modelscope[cv]) (0.5.0)\n",
      "Requirement already satisfied: oauthlib>=3.0.0 in /usr/local/lib/python3.10/dist-packages (from requests-oauthlib>=0.7.0->google-auth-oauthlib<1.1,>=0.5->tensorboard->mmdet3d==1.0.0a1->modelscope[cv]) (3.2.2)\n",
      "Requirement already satisfied: ipython-genutils in /usr/local/lib/python3.10/dist-packages (from ipykernel->jupyter->nuscenes-devkit->mmdet3d==1.0.0a1->modelscope[cv]) (0.2.0)\n",
      "Requirement already satisfied: tornado>=4.2 in /usr/local/lib/python3.10/dist-packages (from ipykernel->jupyter->nuscenes-devkit->mmdet3d==1.0.0a1->modelscope[cv]) (6.2)\n",
      "Requirement already satisfied: traitlets>=4.1.0 in /usr/local/lib/python3.10/dist-packages (from ipykernel->jupyter->nuscenes-devkit->mmdet3d==1.0.0a1->modelscope[cv]) (5.7.1)\n",
      "Requirement already satisfied: ipython>=5.0.0 in /usr/local/lib/python3.10/dist-packages (from ipykernel->jupyter->nuscenes-devkit->mmdet3d==1.0.0a1->modelscope[cv]) (7.34.0)\n",
      "Requirement already satisfied: jupyter-client in /usr/local/lib/python3.10/dist-packages (from ipykernel->jupyter->nuscenes-devkit->mmdet3d==1.0.0a1->modelscope[cv]) (6.1.12)\n",
      "Requirement already satisfied: widgetsnbextension~=3.6.0 in /usr/local/lib/python3.10/dist-packages (from ipywidgets->jupyter->nuscenes-devkit->mmdet3d==1.0.0a1->modelscope[cv]) (3.6.4)\n",
      "Requirement already satisfied: jupyterlab-widgets>=1.0.0 in /usr/local/lib/python3.10/dist-packages (from ipywidgets->jupyter->nuscenes-devkit->mmdet3d==1.0.0a1->modelscope[cv]) (3.0.7)\n",
      "Requirement already satisfied: prompt-toolkit!=3.0.0,!=3.0.1,<3.1.0,>=2.0.0 in /usr/local/lib/python3.10/dist-packages (from jupyter-console->jupyter->nuscenes-devkit->mmdet3d==1.0.0a1->modelscope[cv]) (3.0.38)\n",
      "Requirement already satisfied: tinycss2 in /usr/local/lib/python3.10/dist-packages (from nbconvert->jupyter->nuscenes-devkit->mmdet3d==1.0.0a1->modelscope[cv]) (1.2.1)\n",
      "Requirement already satisfied: jupyter-core>=4.7 in /usr/local/lib/python3.10/dist-packages (from nbconvert->jupyter->nuscenes-devkit->mmdet3d==1.0.0a1->modelscope[cv]) (5.3.0)\n",
      "Requirement already satisfied: pandocfilters>=1.4.1 in /usr/local/lib/python3.10/dist-packages (from nbconvert->jupyter->nuscenes-devkit->mmdet3d==1.0.0a1->modelscope[cv]) (1.5.0)\n",
      "Requirement already satisfied: nbclient>=0.5.0 in /usr/local/lib/python3.10/dist-packages (from nbconvert->jupyter->nuscenes-devkit->mmdet3d==1.0.0a1->modelscope[cv]) (0.7.4)\n",
      "Requirement already satisfied: defusedxml in /usr/local/lib/python3.10/dist-packages (from nbconvert->jupyter->nuscenes-devkit->mmdet3d==1.0.0a1->modelscope[cv]) (0.7.1)\n",
      "Requirement already satisfied: bleach in /usr/local/lib/python3.10/dist-packages (from nbconvert->jupyter->nuscenes-devkit->mmdet3d==1.0.0a1->modelscope[cv]) (6.0.0)\n",
      "Requirement already satisfied: nbformat>=5.1 in /usr/local/lib/python3.10/dist-packages (from nbconvert->jupyter->nuscenes-devkit->mmdet3d==1.0.0a1->modelscope[cv]) (5.8.0)\n",
      "Requirement already satisfied: beautifulsoup4 in /usr/local/lib/python3.10/dist-packages (from nbconvert->jupyter->nuscenes-devkit->mmdet3d==1.0.0a1->modelscope[cv]) (4.11.2)\n",
      "Requirement already satisfied: entrypoints>=0.2.2 in /usr/local/lib/python3.10/dist-packages (from nbconvert->jupyter->nuscenes-devkit->mmdet3d==1.0.0a1->modelscope[cv]) (0.4)\n",
      "Requirement already satisfied: mistune<2,>=0.8.1 in /usr/local/lib/python3.10/dist-packages (from nbconvert->jupyter->nuscenes-devkit->mmdet3d==1.0.0a1->modelscope[cv]) (0.8.4)\n",
      "Requirement already satisfied: jupyterlab-pygments in /usr/local/lib/python3.10/dist-packages (from nbconvert->jupyter->nuscenes-devkit->mmdet3d==1.0.0a1->modelscope[cv]) (0.2.2)\n",
      "Requirement already satisfied: nest-asyncio>=1.5 in /usr/local/lib/python3.10/dist-packages (from notebook->jupyter->nuscenes-devkit->mmdet3d==1.0.0a1->modelscope[cv]) (1.5.6)\n",
      "Requirement already satisfied: terminado>=0.8.3 in /usr/local/lib/python3.10/dist-packages (from notebook->jupyter->nuscenes-devkit->mmdet3d==1.0.0a1->modelscope[cv]) (0.17.1)\n",
      "Requirement already satisfied: prometheus-client in /usr/local/lib/python3.10/dist-packages (from notebook->jupyter->nuscenes-devkit->mmdet3d==1.0.0a1->modelscope[cv]) (0.16.0)\n",
      "Requirement already satisfied: pyzmq>=17 in /usr/local/lib/python3.10/dist-packages (from notebook->jupyter->nuscenes-devkit->mmdet3d==1.0.0a1->modelscope[cv]) (23.2.1)\n",
      "Requirement already satisfied: Send2Trash>=1.8.0 in /usr/local/lib/python3.10/dist-packages (from notebook->jupyter->nuscenes-devkit->mmdet3d==1.0.0a1->modelscope[cv]) (1.8.0)\n",
      "Requirement already satisfied: argon2-cffi in /usr/local/lib/python3.10/dist-packages (from notebook->jupyter->nuscenes-devkit->mmdet3d==1.0.0a1->modelscope[cv]) (21.3.0)\n",
      "Collecting qtpy>=2.0.1\n",
      "  Downloading QtPy-2.3.1-py3-none-any.whl (84 kB)\n",
      "\u001B[2K     \u001B[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001B[0m \u001B[32m84.9/84.9 kB\u001B[0m \u001B[31m12.6 MB/s\u001B[0m eta \u001B[36m0:00:00\u001B[0m\n",
      "\u001B[?25hRequirement already satisfied: backcall in /usr/local/lib/python3.10/dist-packages (from ipython>=5.0.0->ipykernel->jupyter->nuscenes-devkit->mmdet3d==1.0.0a1->modelscope[cv]) (0.2.0)\n",
      "Requirement already satisfied: matplotlib-inline in /usr/local/lib/python3.10/dist-packages (from ipython>=5.0.0->ipykernel->jupyter->nuscenes-devkit->mmdet3d==1.0.0a1->modelscope[cv]) (0.1.6)\n",
      "Requirement already satisfied: pexpect>4.3 in /usr/local/lib/python3.10/dist-packages (from ipython>=5.0.0->ipykernel->jupyter->nuscenes-devkit->mmdet3d==1.0.0a1->modelscope[cv]) (4.8.0)\n",
      "Collecting jedi>=0.16\n",
      "  Downloading jedi-0.18.2-py2.py3-none-any.whl (1.6 MB)\n",
      "\u001B[2K     \u001B[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001B[0m \u001B[32m1.6/1.6 MB\u001B[0m \u001B[31m72.8 MB/s\u001B[0m eta \u001B[36m0:00:00\u001B[0m\n",
      "\u001B[?25hRequirement already satisfied: pickleshare in /usr/local/lib/python3.10/dist-packages (from ipython>=5.0.0->ipykernel->jupyter->nuscenes-devkit->mmdet3d==1.0.0a1->modelscope[cv]) (0.7.5)\n",
      "Requirement already satisfied: fastjsonschema in /usr/local/lib/python3.10/dist-packages (from nbformat>=5.1->nbconvert->jupyter->nuscenes-devkit->mmdet3d==1.0.0a1->modelscope[cv]) (2.16.3)\n",
      "Requirement already satisfied: jsonschema>=2.6 in /usr/local/lib/python3.10/dist-packages (from nbformat>=5.1->nbconvert->jupyter->nuscenes-devkit->mmdet3d==1.0.0a1->modelscope[cv]) (4.3.3)\n",
      "Requirement already satisfied: ptyprocess in /usr/local/lib/python3.10/dist-packages (from terminado>=0.8.3->notebook->jupyter->nuscenes-devkit->mmdet3d==1.0.0a1->modelscope[cv]) (0.7.0)\n",
      "Requirement already satisfied: argon2-cffi-bindings in /usr/local/lib/python3.10/dist-packages (from argon2-cffi->notebook->jupyter->nuscenes-devkit->mmdet3d==1.0.0a1->modelscope[cv]) (21.2.0)\n",
      "Requirement already satisfied: soupsieve>1.2 in /usr/local/lib/python3.10/dist-packages (from beautifulsoup4->nbconvert->jupyter->nuscenes-devkit->mmdet3d==1.0.0a1->modelscope[cv]) (2.4.1)\n",
      "Requirement already satisfied: webencodings in /usr/local/lib/python3.10/dist-packages (from bleach->nbconvert->jupyter->nuscenes-devkit->mmdet3d==1.0.0a1->modelscope[cv]) (0.5.1)\n",
      "Requirement already satisfied: parso<0.9.0,>=0.8.0 in /usr/local/lib/python3.10/dist-packages (from jedi>=0.16->ipython>=5.0.0->ipykernel->jupyter->nuscenes-devkit->mmdet3d==1.0.0a1->modelscope[cv]) (0.8.3)\n",
      "Requirement already satisfied: pyrsistent!=0.17.0,!=0.17.1,!=0.17.2,>=0.14.0 in /usr/local/lib/python3.10/dist-packages (from jsonschema>=2.6->nbformat>=5.1->nbconvert->jupyter->nuscenes-devkit->mmdet3d==1.0.0a1->modelscope[cv]) (0.19.3)\n",
      "Building wheels for collected packages: face-alignment, fairscale, ffmpeg, trimesh, chumpy, easyrobust, lap, ml-collections, antlr4-python3-runtime, oss2, aliyun-python-sdk-core, crcmod, fvcore, sklearn, wget, iopath, fire\n",
      "  Building wheel for face-alignment (setup.py) ... \u001B[?25l\u001B[?25hdone\n",
      "  Created wheel for face-alignment: filename=face_alignment-1.3.5-py2.py3-none-any.whl size=28244 sha256=71ec8b4f3ec3dada1fddf72158d29e10edeb3dcc1ffcf192e7eadb39c4a7a363\n",
      "  Stored in directory: /root/.cache/pip/wheels/97/4f/65/48940e0c8eabe818a5170a1117777520718d5a875a25626789\n",
      "  Building wheel for fairscale (pyproject.toml) ... \u001B[?25l\u001B[?25hdone\n",
      "  Created wheel for fairscale: filename=fairscale-0.4.13-py3-none-any.whl size=332130 sha256=148cdc1c7aefb9f645c3a011c1710af6946a4fd7d438229a2f772f31cbcfe587\n",
      "  Stored in directory: /root/.cache/pip/wheels/78/a4/c0/fb0a7ef03cff161611c3fa40c6cf898f76e58ec421b88e8cb3\n",
      "  Building wheel for ffmpeg (setup.py) ... \u001B[?25l\u001B[?25hdone\n",
      "  Created wheel for ffmpeg: filename=ffmpeg-1.4-py3-none-any.whl size=6083 sha256=16c81e708d5dc779b2422ff8e4fce36b2142f9c811286167e2172dd794554390\n",
      "  Stored in directory: /root/.cache/pip/wheels/8e/7a/69/cd6aeb83b126a7f04cbe7c9d929028dc52a6e7d525ff56003a\n",
      "  Building wheel for trimesh (setup.py) ... \u001B[?25l\u001B[?25hdone\n",
      "  Created wheel for trimesh: filename=trimesh-2.35.39-py3-none-any.whl size=324071 sha256=85898289597b4c28a6293f4ca32e87eb8d36d40d1fe17a489e683507bfbe56bd\n",
      "  Stored in directory: /root/.cache/pip/wheels/b2/f3/c1/44d04a9a9704581ec9e86c2a572a70a7e8371d0ab3e108bfb4\n",
      "  Building wheel for chumpy (setup.py) ... \u001B[?25l\u001B[?25hdone\n",
      "  Created wheel for chumpy: filename=chumpy-0.70-py3-none-any.whl size=58282 sha256=5dc65afc38be5d50ff83ca7a8153565e6c61f03a3ed2eb15df2ff42849e785fc\n",
      "  Stored in directory: /root/.cache/pip/wheels/e0/c1/ef/29ba7be03653a29ef6f2c3e1956d6c4d8877f2b243af411db1\n",
      "  Building wheel for easyrobust (setup.py) ... \u001B[?25l\u001B[?25hdone\n",
      "  Created wheel for easyrobust: filename=easyrobust-0.2.4-py3-none-any.whl size=1541309 sha256=8c0f247fd47ca60633ce81fea8176f50b325fef21f059436595417755dd25db7\n",
      "  Stored in directory: /root/.cache/pip/wheels/98/46/35/295a5e5fe1de8c84f8a227b749366ec8cfeda27fd23a978997\n",
      "  Building wheel for lap (setup.py) ... \u001B[?25l\u001B[?25hdone\n",
      "  Created wheel for lap: filename=lap-0.4.0-cp310-cp310-linux_x86_64.whl size=1655265 sha256=d0bd00f6ed37c62ced447d7bef956485d7806ab2af74387772a68c545e2752b1\n",
      "  Stored in directory: /root/.cache/pip/wheels/00/42/2e/9dfe19270eea279d79e84767ff0d7b8082c3bf776cad00e83d\n",
      "  Building wheel for ml-collections (setup.py) ... \u001B[?25l\u001B[?25hdone\n",
      "  Created wheel for ml-collections: filename=ml_collections-0.1.1-py3-none-any.whl size=94524 sha256=ce01dad25555413b786b4ab66b66419c417b0eb43557a6ac2deb01277f44307b\n",
      "  Stored in directory: /root/.cache/pip/wheels/7b/89/c9/a9b87790789e94aadcfc393c283e3ecd5ab916aed0a31be8fe\n",
      "  Building wheel for antlr4-python3-runtime (setup.py) ... \u001B[?25l\u001B[?25hdone\n",
      "  Created wheel for antlr4-python3-runtime: filename=antlr4_python3_runtime-4.9.3-py3-none-any.whl size=144573 sha256=b818b66d72217efd0e28dc85257fb697282b199d54491288b61f302cce053826\n",
      "  Stored in directory: /root/.cache/pip/wheels/12/93/dd/1f6a127edc45659556564c5730f6d4e300888f4bca2d4c5a88\n",
      "  Building wheel for oss2 (setup.py) ... \u001B[?25l\u001B[?25hdone\n",
      "  Created wheel for oss2: filename=oss2-2.17.0-py3-none-any.whl size=112391 sha256=042be3eb6485a76b6a8fe96e41893cb1c7de991ba4c80deb714c606b3f045c65\n",
      "  Stored in directory: /root/.cache/pip/wheels/87/04/7b/7e61b8157fdf211c5131375240d0d86ca82e2a88ead9672c88\n",
      "  Building wheel for aliyun-python-sdk-core (setup.py) ... \u001B[?25l\u001B[?25hdone\n",
      "  Created wheel for aliyun-python-sdk-core: filename=aliyun_python_sdk_core-2.13.36-py3-none-any.whl size=533194 sha256=64a09d82b719761df85bef1e22a388ec7b9f1f7a445d98e874737003edd03da1\n",
      "  Stored in directory: /root/.cache/pip/wheels/c0/f4/0e/87c534857132bd3bd2c4465c0b15b4db650cf6c15a876bda34\n",
      "  Building wheel for crcmod (setup.py) ... \u001B[?25l\u001B[?25hdone\n",
      "  Created wheel for crcmod: filename=crcmod-1.7-cp310-cp310-linux_x86_64.whl size=37117 sha256=c317f8c701a8ca4242535e8619d865ca4211c5eb9f9f44a37de4b0343b90af85\n",
      "  Stored in directory: /root/.cache/pip/wheels/85/4c/07/72215c529bd59d67e3dac29711d7aba1b692f543c808ba9e86\n",
      "  Building wheel for fvcore (setup.py) ... \u001B[?25l\u001B[?25hdone\n",
      "  Created wheel for fvcore: filename=fvcore-0.1.5.post20221221-py3-none-any.whl size=61429 sha256=72a422a6704c3de1dd325e291978e7207290f0947f3d5229e15b6a579069b6d2\n",
      "  Stored in directory: /root/.cache/pip/wheels/01/c0/af/77c1cf53a1be9e42a52b48e5af2169d40ec2e89f7362489dd0\n",
      "  Building wheel for sklearn (setup.py) ... \u001B[?25l\u001B[?25hdone\n",
      "  Created wheel for sklearn: filename=sklearn-0.0.post4-py3-none-any.whl size=2973 sha256=8e8f93fa6a99cfb596f7e0fa3b3705e371397cca85c23bc151f5c96da20bb1fa\n",
      "  Stored in directory: /root/.cache/pip/wheels/46/b8/69/4f7789b7d2fc0718a44cbc4ae5d40970a40c22c472ae50f0a1\n",
      "  Building wheel for wget (setup.py) ... \u001B[?25l\u001B[?25hdone\n",
      "  Created wheel for wget: filename=wget-3.2-py3-none-any.whl size=9676 sha256=2f332a820b348c7daba0a6ec71f5b9acce43cd7050f4b625488db6a3ff912488\n",
      "  Stored in directory: /root/.cache/pip/wheels/8b/f1/7f/5c94f0a7a505ca1c81cd1d9208ae2064675d97582078e6c769\n",
      "  Building wheel for iopath (setup.py) ... \u001B[?25l\u001B[?25hdone\n",
      "  Created wheel for iopath: filename=iopath-0.1.10-py3-none-any.whl size=31547 sha256=fc12458bd0dcae1d391df16b0e0a33fb98f157d12c162da27ae852cc2dc6f2b4\n",
      "  Stored in directory: /root/.cache/pip/wheels/9a/a3/b6/ac0fcd1b4ed5cfeb3db92e6a0e476cfd48ed0df92b91080c1d\n",
      "  Building wheel for fire (setup.py) ... \u001B[?25l\u001B[?25hdone\n",
      "  Created wheel for fire: filename=fire-0.5.0-py2.py3-none-any.whl size=116952 sha256=790d1bd9aef712bda5b5cc0b13688021409d99b2c2d3eb3b8b7d8eee457419c5\n",
      "  Stored in directory: /root/.cache/pip/wheels/90/d4/f7/9404e5db0116bd4d43e5666eaa3e70ab53723e1e3ea40c9a95\n",
      "Successfully built face-alignment fairscale ffmpeg trimesh chumpy easyrobust lap ml-collections antlr4-python3-runtime oss2 aliyun-python-sdk-core crcmod fvcore sklearn wget iopath fire\n",
      "Installing collected packages: wget, videofeatures-clipit, tokenizers, sklearn, shotdetect-scenedetect-lgss, sentencepiece, pyclipper, paint-ldm, ninja, lmdb, lap, json-tricks, ffmpeg, edit-distance, dataclasses, crcmod, control-ldm, bmt-clipit, av, antlr4-python3-runtime, addict, yapf, yacs, xxhash, utils, ujson, terminaltables, simplejson, shapely, setuptools, rapidfuzz, qtpy, pyquaternion, pyflakes, pycryptodomex, pycryptodome, pycodestyle, pybind11, pyarrow, portalocker, plyfile, pathspec, panopticapi, onnx, omegaconf, mypy-extensions, multidict, ml-collections, mccabe, lightning-utilities, jmespath, jedi, importlib-metadata, humanfriendly, ftfy, frozenlist, fire, ffmpeg-python, einops, dill, decord, async-timeout, yarl, trimesh, responses, PyMCubes, multiprocess, matplotlib, iopath, huggingface-hub, flake8, coloredlogs, chumpy, blobfile, black, aiosignal, xtcocotools, transformers, onnxsim, onnxruntime, mmcls, lyft-dataset-sdk, fvcore, diffusers, descartes, aliyun-python-sdk-core, aiohttp, qtconsole, mmsegmentation, mmdet, aliyun-python-sdk-kms, oss2, datasets, modelscope, jupyter, nuscenes-devkit, mmdet3d, torchmetrics, timm, thop, pytorch-metric-learning, smplx, pytorch-lightning, pai-easycv, open-clip-torch, nerfacc, lpips, kornia, fairscale, face-alignment, easyrobust, ddpm-guided-diffusion, clip, accelerate\n",
      "  Attempting uninstall: shapely\n",
      "    Found existing installation: shapely 2.0.1\n",
      "    Uninstalling shapely-2.0.1:\n",
      "      Successfully uninstalled shapely-2.0.1\n",
      "  Attempting uninstall: setuptools\n",
      "    Found existing installation: setuptools 67.7.2\n",
      "    Uninstalling setuptools-67.7.2:\n",
      "      Successfully uninstalled setuptools-67.7.2\n",
      "  Attempting uninstall: pyarrow\n",
      "    Found existing installation: pyarrow 9.0.0\n",
      "    Uninstalling pyarrow-9.0.0:\n",
      "      Successfully uninstalled pyarrow-9.0.0\n",
      "  Attempting uninstall: matplotlib\n",
      "    Found existing installation: matplotlib 3.7.1\n",
      "    Uninstalling matplotlib-3.7.1:\n",
      "      Successfully uninstalled matplotlib-3.7.1\n",
      "\u001B[31mERROR: pip's dependency resolver does not currently take into account all the packages that are installed. This behaviour is the source of the following dependency conflicts.\n",
      "pandas-gbq 0.17.9 requires pyarrow<10.0dev,>=3.0.0, but you have pyarrow 12.0.0 which is incompatible.\n",
      "cvxpy 1.3.1 requires setuptools>65.5.1, but you have setuptools 59.8.0 which is incompatible.\n",
      "arviz 0.15.1 requires setuptools>=60.0.0, but you have setuptools 59.8.0 which is incompatible.\u001B[0m\u001B[31m\n",
      "\u001B[0mSuccessfully installed PyMCubes-0.1.4 accelerate-0.18.0 addict-2.4.0 aiohttp-3.8.4 aiosignal-1.3.1 aliyun-python-sdk-core-2.13.36 aliyun-python-sdk-kms-2.16.0 antlr4-python3-runtime-4.9.3 async-timeout-4.0.2 av-10.0.0 black-23.3.0 blobfile-2.0.2 bmt-clipit-1.0 chumpy-0.70 clip-1.0 coloredlogs-15.0.1 control-ldm-0.0.1 crcmod-1.7 dataclasses-0.6 datasets-2.8.0 ddpm-guided-diffusion-0.0.0 decord-0.6.0 descartes-1.1.0 diffusers-0.16.1 dill-0.3.6 easyrobust-0.2.4 edit-distance-1.0.6 einops-0.6.1 face-alignment-1.3.5 fairscale-0.4.13 ffmpeg-1.4 ffmpeg-python-0.2.0 fire-0.5.0 flake8-6.0.0 frozenlist-1.3.3 ftfy-6.1.1 fvcore-0.1.5.post20221221 huggingface-hub-0.14.1 humanfriendly-10.0 importlib-metadata-6.6.0 iopath-0.1.10 jedi-0.18.2 jmespath-0.10.0 json-tricks-3.16.1 jupyter-1.0.0 kornia-0.6.12 lap-0.4.0 lightning-utilities-0.8.0 lmdb-1.4.1 lpips-0.1.4 lyft-dataset-sdk-0.0.8 matplotlib-3.5.2 mccabe-0.7.0 ml-collections-0.1.1 mmcls-0.25.0 mmdet-2.28.2 mmdet3d-1.0.0a1 mmsegmentation-0.30.0 modelscope-1.5.2 multidict-6.0.4 multiprocess-0.70.14 mypy-extensions-1.0.0 nerfacc-0.2.2 ninja-1.11.1 nuscenes-devkit-1.1.10 omegaconf-2.3.0 onnx-1.14.0 onnxruntime-1.14.1 onnxsim-0.4.28 open-clip-torch-2.19.0 oss2-2.17.0 pai-easycv-0.9.0 paint-ldm-0.0.0 panopticapi-0.1 pathspec-0.11.1 plyfile-0.9 portalocker-2.7.0 pyarrow-12.0.0 pybind11-2.10.4 pyclipper-1.3.0.post4 pycodestyle-2.10.0 pycryptodome-3.17 pycryptodomex-3.17 pyflakes-3.0.1 pyquaternion-0.9.9 pytorch-lightning-2.0.2 pytorch-metric-learning-2.1.1 qtconsole-5.4.2 qtpy-2.3.1 rapidfuzz-3.0.0 responses-0.18.0 sentencepiece-0.1.99 setuptools-59.8.0 shapely-1.8.5 shotdetect-scenedetect-lgss-0.0.4 simplejson-3.19.1 sklearn-0.0.post4 smplx-0.1.28 terminaltables-3.1.10 thop-0.1.1.post2209072238 timm-0.5.4 tokenizers-0.13.3 torchmetrics-0.11.4 transformers-4.28.1 trimesh-2.35.39 ujson-5.7.0 utils-1.0.1 videofeatures-clipit-1.0 wget-3.2 xtcocotools-1.13 xxhash-3.2.0 yacs-0.1.8 yapf-0.33.0 yarl-1.9.2\n",
      "Looking in indexes: https://pypi.org/simple, https://us-python.pkg.dev/colab-wheels/public/simple/\n",
      "Collecting git+https://github.com/NVlabs/nvdiffrast.git\n",
      "  Cloning https://github.com/NVlabs/nvdiffrast.git to /tmp/pip-req-build-rrpm6t1g\n",
      "  Running command git clone --filter=blob:none --quiet https://github.com/NVlabs/nvdiffrast.git /tmp/pip-req-build-rrpm6t1g\n",
      "  Resolved https://github.com/NVlabs/nvdiffrast.git to commit 335cfa6b33d785730a04283994214bed57884e87\n",
      "  Preparing metadata (setup.py) ... \u001B[?25l\u001B[?25hdone\n",
      "Requirement already satisfied: numpy in /usr/local/lib/python3.10/dist-packages (from nvdiffrast==0.3.0) (1.22.4)\n",
      "Building wheels for collected packages: nvdiffrast\n",
      "  Building wheel for nvdiffrast (setup.py) ... \u001B[?25l\u001B[?25hdone\n",
      "  Created wheel for nvdiffrast: filename=nvdiffrast-0.3.0-py3-none-any.whl size=137444 sha256=29882710865ae6064da467df3febf0e9be63371fbeec58c295e8e9f13e553835\n",
      "  Stored in directory: /tmp/pip-ephem-wheel-cache-hoafo1mr/wheels/24/2b/98/f611ce0d4062793b78daf724e6b47ee800c9a2d3e1ff4b06fa\n",
      "Successfully built nvdiffrast\n",
      "Installing collected packages: nvdiffrast\n",
      "Successfully installed nvdiffrast-0.3.0\n",
      "Looking in indexes: https://pypi.org/simple, https://us-python.pkg.dev/colab-wheels/public/simple/\n",
      "Collecting git+https://github.com/facebookresearch/pytorch3d.git\n",
      "  Cloning https://github.com/facebookresearch/pytorch3d.git to /tmp/pip-req-build-l6ksgsym\n",
      "  Running command git clone --filter=blob:none --quiet https://github.com/facebookresearch/pytorch3d.git /tmp/pip-req-build-l6ksgsym\n",
      "  Resolved https://github.com/facebookresearch/pytorch3d.git to commit ef5f620263562657a022dee419abd63534d123e7\n",
      "  Preparing metadata (setup.py) ... \u001B[?25l\u001B[?25hdone\n",
      "Requirement already satisfied: fvcore in /usr/local/lib/python3.10/dist-packages (from pytorch3d==0.7.3) (0.1.5.post20221221)\n",
      "Requirement already satisfied: iopath in /usr/local/lib/python3.10/dist-packages (from pytorch3d==0.7.3) (0.1.10)\n",
      "Requirement already satisfied: yacs>=0.1.6 in /usr/local/lib/python3.10/dist-packages (from fvcore->pytorch3d==0.7.3) (0.1.8)\n",
      "Requirement already satisfied: Pillow in /usr/local/lib/python3.10/dist-packages (from fvcore->pytorch3d==0.7.3) (8.4.0)\n",
      "Requirement already satisfied: pyyaml>=5.1 in /usr/local/lib/python3.10/dist-packages (from fvcore->pytorch3d==0.7.3) (6.0)\n",
      "Requirement already satisfied: tqdm in /usr/local/lib/python3.10/dist-packages (from fvcore->pytorch3d==0.7.3) (4.65.0)\n",
      "Requirement already satisfied: tabulate in /usr/local/lib/python3.10/dist-packages (from fvcore->pytorch3d==0.7.3) (0.8.10)\n",
      "Requirement already satisfied: numpy in /usr/local/lib/python3.10/dist-packages (from fvcore->pytorch3d==0.7.3) (1.22.4)\n",
      "Requirement already satisfied: termcolor>=1.1 in /usr/local/lib/python3.10/dist-packages (from fvcore->pytorch3d==0.7.3) (2.3.0)\n",
      "Requirement already satisfied: portalocker in /usr/local/lib/python3.10/dist-packages (from iopath->pytorch3d==0.7.3) (2.7.0)\n",
      "Requirement already satisfied: typing-extensions in /usr/local/lib/python3.10/dist-packages (from iopath->pytorch3d==0.7.3) (4.5.0)\n",
      "Building wheels for collected packages: pytorch3d\n",
      "  Building wheel for pytorch3d (setup.py) ... \u001B[?25l\u001B[?25hdone\n",
      "  Created wheel for pytorch3d: filename=pytorch3d-0.7.3-cp310-cp310-linux_x86_64.whl size=58481618 sha256=981920bfe09a34d4055d05a2de0b5fa843110bce01ab09dbb92340e8f78b14af\n",
      "  Stored in directory: /tmp/pip-ephem-wheel-cache-yq6imwm9/wheels/dd/74/cc/b9266c863f19026f796e59a04e1cd9eb3754474a52ce1b66ce\n",
      "Successfully built pytorch3d\n",
      "Installing collected packages: pytorch3d\n",
      "Successfully installed pytorch3d-0.7.3\n"
     ]
    }
   ],
   "source": [
    "!pip install torch torchvision torchaudio\n",
    "!pip install tensorflow\n",
    "!pip install \"modelscope[cv]\" -f https://modelscope.oss-cn-beijing.aliyuncs.com/releases/repo.html\n",
    "!pip install git+https://github.com/NVlabs/nvdiffrast.git\n",
    "!pip install git+https://github.com/facebookresearch/pytorch3d.git"
   ]
  },
  {
   "cell_type": "markdown",
   "source": [
    "# Step 2: Model initialization\n",
    "Initialize the pipeline and download the pretrained weights from modelscope."
   ],
   "metadata": {
    "id": "tWKKGTp3hdXS"
   }
  },
  {
   "cell_type": "code",
   "source": [
    "import os\n",
    "import cv2\n",
    "from moviepy.editor import ImageSequenceClip\n",
    "from modelscope.models.cv.face_reconstruction.utils import write_obj\n",
    "from modelscope.outputs import OutputKeys\n",
    "from modelscope.pipelines import pipeline\n",
    "from modelscope.utils.constant import Tasks\n",
    "\n",
    "face_reconstruction = pipeline(Tasks.face_reconstruction, model='damo/cv_resnet50_face-reconstruction', model_revision='v2.0.0-HRN')"
   ],
   "metadata": {
    "colab": {
     "base_uri": "https://localhost:8080/"
    },
    "id": "Lr1N_7QlPMRs",
    "outputId": "7358e750-ac49-4bb8-fe06-e27f0a738fb7"
   },
   "execution_count": 2,
   "outputs": [
    {
     "output_type": "stream",
     "name": "stderr",
     "text": [
      "2023-05-05 06:48:09,511 - modelscope - INFO - PyTorch version 2.0.0+cu118 Found.\n",
      "2023-05-05 06:48:09,515 - modelscope - INFO - TensorFlow version 2.12.0 Found.\n",
      "2023-05-05 06:48:09,518 - modelscope - INFO - Loading ast index from /root/.cache/modelscope/ast_indexer\n",
      "2023-05-05 06:48:09,520 - modelscope - INFO - No valid ast index found from /root/.cache/modelscope/ast_indexer, generating ast index from prebuilt!\n",
      "2023-05-05 06:48:09,572 - modelscope - INFO - Loading done! Current index file version is 1.5.2, with md5 ecac0576d64717f2fd5d2f4631cf4ef5 and a total number of 860 components indexed\n",
      "2023-05-05 06:48:13,232 - modelscope - INFO - Use user-specified model revision: v2.0.0-HRN\n",
      "Downloading: 100%|██████████| 6.00k/6.00k [00:00<00:00, 2.19MB/s]\n",
      "Downloading: 100%|██████████| 91.9M/91.9M [00:08<00:00, 11.1MB/s]\n",
      "Downloading: 100%|██████████| 21.5k/21.5k [00:00<00:00, 106kB/s] \n",
      "Downloading: 100%|██████████| 121M/121M [00:11<00:00, 10.8MB/s]\n",
      "Downloading: 100%|██████████| 3.00M/3.00M [00:01<00:00, 1.80MB/s]\n",
      "Downloading: 100%|██████████| 240M/240M [00:19<00:00, 12.7MB/s]\n",
      "Downloading: 100%|██████████| 558k/558k [00:01<00:00, 450kB/s]\n",
      "Downloading: 100%|██████████| 195/195 [00:00<00:00, 632kB/s]\n",
      "Downloading: 100%|██████████| 51.2M/51.2M [00:06<00:00, 7.97MB/s]\n",
      "Downloading: 100%|██████████| 224M/224M [00:18<00:00, 12.5MB/s]\n",
      "Downloading: 100%|██████████| 26.5M/26.5M [00:03<00:00, 7.76MB/s]\n",
      "Downloading: 100%|██████████| 353M/353M [00:28<00:00, 13.2MB/s]\n",
      "Downloading: 100%|██████████| 4.00k/4.00k [00:00<00:00, 1.24MB/s]\n",
      "Downloading: 100%|██████████| 33.3M/33.3M [00:04<00:00, 8.09MB/s]\n",
      "Downloading: 100%|██████████| 86.2k/86.2k [00:00<00:00, 204kB/s]\n",
      "Downloading: 100%|██████████| 104M/104M [00:10<00:00, 10.9MB/s]\n",
      "Downloading: 100%|██████████| 85.7M/85.7M [00:08<00:00, 10.8MB/s]\n",
      "Downloading: 100%|██████████| 33.4M/33.4M [00:04<00:00, 7.56MB/s]\n",
      "Downloading: 100%|██████████| 994/994 [00:00<00:00, 1.32MB/s]\n",
      "Downloading: 100%|██████████| 2.51M/2.51M [00:01<00:00, 1.81MB/s]\n",
      "2023-05-05 06:50:55,521 - modelscope - INFO - initiate model from /root/.cache/modelscope/hub/damo/cv_resnet50_face-reconstruction\n",
      "2023-05-05 06:50:55,524 - modelscope - INFO - initiate model from location /root/.cache/modelscope/hub/damo/cv_resnet50_face-reconstruction.\n",
      "2023-05-05 06:50:55,527 - modelscope - INFO - initialize model from /root/.cache/modelscope/hub/damo/cv_resnet50_face-reconstruction\n"
     ]
    },
    {
     "output_type": "stream",
     "name": "stdout",
     "text": [
      "initialize network with normal\n",
      "initialize network with normal\n"
     ]
    },
    {
     "output_type": "stream",
     "name": "stderr",
     "text": [
      "2023-05-05 06:51:08,092 - modelscope - WARNING - No preprocessor field found in cfg.\n",
      "2023-05-05 06:51:08,096 - modelscope - WARNING - No val key and type key found in preprocessor domain of configuration.json file.\n",
      "2023-05-05 06:51:08,099 - modelscope - WARNING - Cannot find available config to build preprocessor at mode inference, current config: {'model_dir': '/root/.cache/modelscope/hub/damo/cv_resnet50_face-reconstruction'}. trying to build by task and model information.\n",
      "2023-05-05 06:51:08,100 - modelscope - WARNING - No preprocessor key ('face_reconstruction', 'face-reconstruction') found in PREPROCESSOR_MAP, skip building preprocessor.\n"
     ]
    },
    {
     "output_type": "stream",
     "name": "stdout",
     "text": [
      "loading the model from /root/.cache/modelscope/hub/damo/cv_resnet50_face-reconstruction/pytorch_model.pt\n"
     ]
    }
   ]
  },
  {
   "cell_type": "markdown",
   "source": [
    "# Step 3: Run"
   ],
   "metadata": {
    "id": "Y7-ci36Biham"
   }
  },
  {
   "cell_type": "code",
   "source": [
    "def save_results(result, save_root):\n",
    "    os.makedirs(save_root, exist_ok=True)\n",
    "\n",
    "    # export obj and texture\n",
    "    mesh = result[OutputKeys.OUTPUT]['mesh']\n",
    "    texture_map = result[OutputKeys.OUTPUT_IMG]\n",
    "    mesh['texture_map'] = texture_map\n",
    "    write_obj(os.path.join(save_root, 'hrn_mesh_mid.obj'), mesh)\n",
    "\n",
    "    # export rotation video\n",
    "    frame_list = result[OutputKeys.OUTPUT]['frame_list']\n",
    "    video = ImageSequenceClip(sequence=frame_list, fps=30)\n",
    "    video.write_videofile(\n",
    "        os.path.join(save_root, 'rotate.mp4'), fps=30, audio=False)\n",
    "    del frame_list\n",
    "\n",
    "    # save visualization image\n",
    "    vis_image = result[OutputKeys.OUTPUT]['vis_image']\n",
    "    cv2.imwrite(os.path.join(save_root, 'vis_image.jpg'), vis_image)\n",
    "\n",
    "    print(f'Output written to {os.path.abspath(save_root)}')\n",
    "\n",
    "result = face_reconstruction('https://modelscope.oss-cn-beijing.aliyuncs.com/test/images/face_reconstruction.jpg')\n",
    "save_results(result, './face_reconstruction_results')"
   ],
   "metadata": {
    "colab": {
     "base_uri": "https://localhost:8080/"
    },
    "id": "MSWrBNL8fBET",
    "outputId": "dd2a57f4-c617-495d-9615-e8f351e12369"
   },
   "execution_count": 3,
   "outputs": [
    {
     "output_type": "stream",
     "name": "stdout",
     "text": [
      "Moviepy - Building video ./face_reconstruction_results/rotate.mp4.\n",
      "Moviepy - Writing video ./face_reconstruction_results/rotate.mp4\n",
      "\n"
     ]
    },
    {
     "output_type": "stream",
     "name": "stderr",
     "text": []
    },
    {
     "output_type": "stream",
     "name": "stdout",
     "text": [
      "Moviepy - Done !\n",
      "Moviepy - video ready ./face_reconstruction_results/rotate.mp4\n",
      "Output written to /content/face_reconstruction_results\n"
     ]
    }
   ]
  },
  {
   "cell_type": "markdown",
   "source": [
    "# Step 4: Visualize results"
   ],
   "metadata": {
    "id": "dicsey4Ci1Qu"
   }
  },
  {
   "cell_type": "code",
   "source": [
    "from matplotlib import pyplot as plt\n",
    "def vis_img(path):\n",
    "  img = cv2.imread(path,-1)\n",
    "  plt.imshow(img[..., ::-1])\n",
    "  plt.axis(\"off\")\n",
    "  plt.show()\n",
    "\n",
    "vis_img('./face_reconstruction_results/vis_image.jpg')"
   ],
   "metadata": {
    "colab": {
     "base_uri": "https://localhost:8080/",
     "height": 92
    },
    "id": "VXOO8g7RfMX-",
    "outputId": "023e0dc9-567a-40bd-bd42-21631337e1ad"
   },
   "execution_count": 4,
   "outputs": [
    {
     "output_type": "display_data",
     "data": {
      "text/plain": [
       "<Figure size 640x480 with 1 Axes>"
      ],
      "image/png": "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\n"
     },
     "metadata": {}
    }
   ]
  },
  {
   "cell_type": "code",
   "source": [],
   "metadata": {
    "id": "r0t6CxodsYwU"
   },
   "execution_count": null,
   "outputs": []
  }
 ]
}